View Full Version : تفاوت Form با DataModule در قراردادن جدولها
Saeid59_m
سه شنبه 29 خرداد 1386, 08:14 صبح
سلام
چه فرقی می کنه کامپوننت های AdoTable و AdoConection و ... را توی فرم قراربدیم یا DataModule ?
ghabil
سه شنبه 29 خرداد 1386, 09:01 صبح
وقتی توی دیتاماژول بزارید ، امکان استفاده ازشون در چندین فرم راحتتر و تر و تمیزتر میشه و نیاز نیست فرمها همدیگر رو استفاده کنند ، ضمن اینکه در صورتی که لازم باشه جداول از همدیگه استفاده کنند بازهم دم دست تر هستند، همینطور گاهی اوقات جداولی هستند که متعلق به فرم خاصی نیستند (مثلا جداول لوک آپ) و هر جایی از برنامه به تناوب ازشون استفاده میشه.
از این مسائل تر و تمیز بودن که بگذریم نکته فنی مهم : زمان ساخته شدن و Destroy شدن این کامپوننتهاست که با توجه به نوع کاری که میخواهید انجام بدید هرکدوم مزایا و معایب خودشون رو دارند (روی فرم گذاشتن یا توی دیتاماژول گذاشتن)
HamidRezaAF
سه شنبه 29 خرداد 1386, 12:53 عصر
با سلام ،
به طور کلی مدیریت پایگاه داده مرکزیت پیدا می کند. البته این مرکزیت هم یک سری پیچیدگی ها را دارد.
در ضمن سربار یک دیتا ماژول کمتر از یک فرم است آن را با نگاهی بر یونیتهای به کار گرفته شده در آن می بینید.
در نهایت مطالبی در delphi.about.com برای این قضیه بود که میتونید آن را به طور کامل مطالعه کنید.
موفق باشید
حمید رضا
merced
چهارشنبه 30 خرداد 1386, 06:13 صبح
http://delphi.about.com/od/database/l/aa101601a.htm
من Datasource ها رو تو DataModule نمیزارم. (هر کیو دیدم این کار رو می کنه)
تمام Compnent های متصل به اون DataSoure . با عوض شدن (مثلاً جابجایی رکورد) یا فراح.انی یه متد از Dataset به روز می شن.
روی هر فرم DataSource های مربوط به اون رو بذار و با باز و بسته شدن فرم Enable اونا رو عوض بشه .
سوال من:
کارم درسته ؟ اگه روش مناسب تری هست .... چیه ؟
اگه فرم ها موقع نمایش Create شه و موقع بسته شدن Free . به درد سرش می ارزه ؟
A.Nemati
چهارشنبه 30 خرداد 1386, 09:38 صبح
مشخصا استفاده از DataModule بهتره.
شما میتونید کنترلهای DB خودتونو به DataSoure مربوط به آنها در DataModule متصل کنید. در ضمن اگه نیاز به event خاصی هم دارید، معادل آن را در فرم خودتون بسازید و به Event DataSoure مربوطه نسبت بدید (Assign کنید).
اینطوری هم کار خیلی ترو تمیزتر میشه و هم اصول شیگرایی رو بهتر رعایت کردید. و هم اصلاحاتت بسیار راحتتر میشه، به علاوه مدیریت بسیار بهتری روی دیتابیست دارید.
یک مشکل روش شما هم اعمال تغییراته(به خاطر رعایت نکردن اصول oo)، مثلا فرض کند بخواهید یک تغییر توی یکی از بانکهات بدید، اونوقت باید برید و توی تمام فرمهایی که از اون بانک استفاده کردن، تغییراتو اعمال کنید و ...
vcldeveloper
چهارشنبه 30 خرداد 1386, 10:29 صبح
اگه فرم ها موقع نمایش Create شه و موقع بسته شدن Free . به درد سرش می ارزه ؟
این سوال مربوط به این تاپیک نیست و باید در یک تاپیک مجزا پرسیده بشه. جواب کلی اش هم اینه که بستگی به این داره که شما اون فرم خاص را برای چه منظوری استفاده کنید و نمیشه با همه فرم ها یکسان برخورد کرد.
تمام Compnent های متصل به اون DataSoure . با عوض شدن (مثلاً جابجایی رکورد) یا فراح.انی یه متد از Dataset به روز می شن.
روی هر فرم DataSource های مربوط به اون رو بذار و با باز و بسته شدن فرم Enable اونا رو عوض بشه .
دقت کنید که غیرفعال کردن یک DataSource موجب بسته شدن جدول مربوطه نمیشه و جدول همچنان باز هست.
همچنین، اگر چندین فرم از یک جدول استفاده می کنند، استفاده از DataSource جداگانه بر روی هر فرم فقط موجب سربار بیشتر میشه، غیر از اینکه: 1) شما پردازش خاصی را در رویداد های هر یک از DataSource ها انجام بدید، یا 2) فرم های برنامه شما همزمان با هم Create میشند و در زمانی که بهشون نیازی نیست، Free نمی شند، که در این صورت کار بر روی یک فرم باعث میشه کنترل های موجود در سایر فرم ها که به همان جدول متصل هستند هم دائما آپدیت بشند، و وجود یک DataSource بر روی هر فرم و غیرفعال کردن آن می تواند مانع از آپدیت شدن کنترل های اضافه شود.
babak869
چهارشنبه 30 خرداد 1386, 13:21 عصر
به نظر من بهترین و اصلی ترین مزیت استفاده از DataModule در برنامه اینه که همیشه رکوردها آپدیت هستند . اما اگه روی هر فرم یه جدول و یه دیتاسورس بزارید اونوقت در موقع دسترسی از یه فرم دیگه به اون جدول ممکنه با عدم نمایش آخرین رکوردهای اضافه شده مواجه بشید.
بالاخره بورلند هم حتما دلیل قانع کننده ای داشته که یه پیمانه داده یا همون دیتاماژول طراحی کرده
موفق باشید
SYNDROME
چهارشنبه 30 خرداد 1386, 14:33 عصر
با سلام
ولی با همه این امکانات نباید همه Componetها را روی ماژول قرار داد.
1-چون ماژول شلوغ می شود.
2-بعضی از این Component ها فقط در یک فرم اسفاده می شوند.
(منظورم از Component همان ADOQuery و DataSource و ADOTable و . . . است)
A.Nemati
چهارشنبه 30 خرداد 1386, 15:51 عصر
با سلام
ولی با همه این امکانات نباید همه Componetها را روی ماژول قرار داد.
1-چون ماژول شلوغ می شود.
2-بعضی از این Component ها فقط در یک فرم اسفاده می شوند.
(منظورم از Component همان ADOQuery و DataSource و ADOTable و . . . است)
دوست عزیز
1- شلوغ شدن DataModual دلیل نمیشه که ما روش نادرستی را انتخاب کنیم
2- به نظر من یکدست بودن کار و این که هر شی سرجای خودش قرار بگیره خیلی بیشتر از اینها میارزه.
ضمنا توسعه برنامه رو هم درنظر بگیرید، اگه چند وقت دیگه بخواهید دوباره تغییراتی اعمال کنید، مخصوصا اگه چند وقتی از برنامهتون دور باشید، احتمال جا انداختن تغییرات کامپوننتهایی که سرجای اصلیشون (DataModual) نیستند زیاده و اگه بخواهید مطمئن بشید که هیچ چیزی رو جا نیاداختید باید وقت زیادی رو صرف کنید. (با رعایت برخی موارد میتوانید تغییرات روی برنامهتان را بسادگی انجام دهید).
SYNDROME
چهارشنبه 30 خرداد 1386, 18:38 عصر
با سلام
دوست عزیز
1- شلوغ شدن DataModual دلیل نمیشه که ما روش نادرستی را انتخاب کنیم
2- به نظر من یکدست بودن کار و این که هر شی سرجای خودش قرار بگیره خیلی بیشتر از اینها میارزه.
ضمنا توسعه برنامه رو هم درنظر بگیرید، اگه چند وقت دیگه بخواهید دوباره تغییراتی اعمال کنید، مخصوصا اگه چند وقتی از برنامهتون دور باشید، احتمال جا انداختن تغییرات کامپوننتهایی که سرجای اصلیشون (DataModual) نیستند زیاده و اگه بخواهید مطمئن بشید که هیچ چیزی رو جا نیاداختید باید وقت زیادی رو صرف کنید. (با رعایت برخی موارد میتوانید تغییرات روی برنامهتان را بسادگی انجام دهید).
با تشکر از شما.
شما زمانی که بخواهید به جای ساختن مثلاً ADOQuery بخواهید مستقیماً آن را در صفحه قرار دهید اگر بر روی ماژول قرار دهید این قدر شلوغ می شود که به راحتی ADO دیگر را که نیز به آن دارید نمی توانید پیدا کنید
ولی با این حال حرف شما کاملا درست است ولی نه برای همه کامپونتها با کارهای متفاوت.
vcldeveloper
پنج شنبه 31 خرداد 1386, 10:33 صبح
شما زمانی که بخواهید به جای ساختن مثلاً ADOQuery بخواهید مستقیماً آن را در صفحه قرار دهید اگر بر روی ماژول قرار دهید این قدر شلوغ می شود که به راحتی ADO دیگر را که نیز به آن دارید نمی توانید پیدا کنیدمجبور نیستید تمام کامپوننت ها تون رو روی یک Data Module بزارید. می تونید در صورت نیاز اونها را بصورت منطقی بین ماجول های مختلف تقسیم کنید.
به نظر من بهترین و اصلی ترین مزیت استفاده از DataModule در برنامه اینه که همیشه رکوردها آپدیت هستند . اما اگه روی هر فرم یه جدول و یه دیتاسورس بزارید اونوقت در موقع دسترسی از یه فرم دیگه به اون جدول ممکنه با عدم نمایش آخرین رکوردهای اضافه شده مواجه بشید.من هنوز متوجه نشدم که چطور قرار دادن dataset ها بر روی ماجول می تونه موجب آپدیت شدن داده های اونها بشه!!
object
جمعه 01 تیر 1386, 11:11 صبح
همه همه چیز گفتن فکر میکنم یک نکته جا موند
اگر شما از دیتاماژول استفاده کنید یک توانایی خوب به شما میده
شما میتونید خیلی قشنگ دولایه برنامه بنویسید
به نظر من شاید بهترین دلیلش رو بشه دولایه برنامه نوشتن عنوان کرد
AFTABGARDAN2006
شنبه 02 تیر 1386, 00:56 صبح
دوست عزیز نکته دیگه ای که روی کجا قرار دادن تاثیر می گذارد اینه که نوع نمایش فرمها در پروژه شما چطوره مثلا در فرمهای که خاصیت نمایش اطلاعات را دارند یعنی فقط وظیفه اونها نمایش لیستی از اطلاعات جداول است بهتر است یک حالت کلی برای همه در نظر بگیری و Adocomponent ها رو به همراه DSource رو هم در اون فرم جاگذاری نمایی بعد برای همه لیست ها از این فرم استفاده کنی ولی ADOConnection رو داخل ماژول بزار برای فرمهای که خاصیت ورود اطلاعات دارن بهتره که از هیچکدام از کامپوننت های ADO استفاده نکنی و ثبت ،ویرایش و... رو توسط یه ADODataset که درون ماژول گذاشتی با اچرای دستورSQL اعمال نمایی این روش چندین مزیت خاص داره که پروژه های بزرگ بسیار کارآمد است مثلاً فرم لیست رو برای هر پروژه دیگری می تونی ADD کنی و فقط Conncetion اونو عوض کنی و....
AFTABGARDAN2006
شنبه 02 تیر 1386, 01:04 صبح
من هنوز متوجه نشدم که چطور قرار دادن dataset ها بر روی ماجول می تونه موجب آپدیت شدن داده های اونها بشه!!
آقای کشاورز منظورشون اینه که اگه در همه فرمها با اون Dataset (خاص) کاربکنن هر تغییری روی اون اعمال می شه و در آخرین فراخوانی اطلاعات بروز شده است
ولی من منظور از دو لایه شدن رو نفهمیدم چیه ؟
Saeid59_m
شنبه 02 تیر 1386, 13:58 عصر
از همه دوستان ممنونم
یه مزیتی رو هم خودم پیدا کردم اونم اینه که زیر تمام کامپوننتها اسمشون رو می نویسه . چون من همیشه برای پیدا کردن جدول مورد نظرم روی فرم مشکل داشتم این خیلی بدردم خورد .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.