PDA

View Full Version : قرار دادن بیش از چند Table در یک DataSet



benighted.boy
یک شنبه 06 آبان 1386, 22:38 عصر
سلام به تمامی دوستان و اساتید محترم.
من توی سایت خیلی گشتم اما جوابی که به دردم بخوره رو پیدا نکردم.
می خواستم بدونم چه طور میشه با استفاده از یک SQLDataAdapter چندین Table رو داخل یک DataSet قرار داد و به کرات ازشون استفاده کرد؟
اگر کسی راه حل یا منبعی که بتونه کمک کنه سراغ داره لطفا کمکم کنه .
ممنون و موفق باشید .

PC2st
یک شنبه 06 آبان 1386, 23:51 عصر
می خواستم بدونم چه طور میشه با استفاده از یک SQLDataAdapter چندین Table رو داخل یک DataSet قرار داد و به کرات ازشون استفاده کرد؟
اگر محتوای جداول (ستونها و غیره) متفاوت هستند، بصورت زجر آوری میشه این کار رو کرد ولی بهتره (خیلی بهتره) که برای هر جدول یک شیئ SqlDataAdapter ایجاد کنید و توسط SqlDataAdapter مربوط به هر جدول، اونها رو Fill کنید.

benighted.boy
دوشنبه 07 آبان 1386, 07:37 صبح
آخه مسئله اینجاست که من تمتم راههارو امتحان کردم .هم از چنتا DataSet استفاده کردم هم از چندتا SQLDataAdapter ولی به هرکدومش یه جور گیر داد .
منتطقی ترین راه چیه ؟
چرا وقتی از ویزارد استفاده میکنیم اینقد راحت دیتاست رو میسازه و کل دیتابیس رو قرار میده اما با کد اینطوری به مشکل میخوره ؟

PC2st
دوشنبه 07 آبان 1386, 19:26 عصر
منتطقی ترین راه چیه ؟
اینه که یک شیئ DataSet داشته باشید و به ازای هر جدولی که میخواید در DataSet ایجاد کنید، یک SqlDataAdapter بوجود بیارید و هر جدول از DataSet رو به ازای SqlDataAdapter متناظر به آن جدول، پر کنید.


چرا وقتی از ویزارد استفاده میکنیم اینقد راحت دیتاست رو میسازه و کل دیتابیس رو قرار میده اما با کد اینطوری به مشکل میخوره ؟
چون ویزارد همه کارها رو انجام میده و دیگه نیازی به پیاده سازی دستی نیست :-)

بین جدوالتون رابطه هم هست؟ اگر میشه بگید که در کجای کار مشکل دارید؟

hassan razavi
دوشنبه 07 آبان 1386, 21:51 عصر
از DataAdabter بریزید داخل DataTable وسپس Datatable را Add کنید به Dataset

benighted.boy
سه شنبه 08 آبان 1386, 08:17 صبح
یه راه خودم پیدا کردم .اینکه به تعداد Table هام DataAdapter تعریف کنم و بعد به دیتا ست Fill کنم . قصد من از این کار استفاده از چند Tab و DataGrid در یک فرم بود که از چندین تا Table پر میشد.مشکلم سر DataGrid ها بود که با استفاده از دستور

DataGridview1.DataSource=ObjDataSet.Table[0].Defultview;
حل شد.
حالا به نظر استید این راه منطقی هست ؟
یا راه کامل تر و بهتری هم داره ؟

iman_s52
سه شنبه 08 آبان 1386, 09:17 صبح
حالا من یه سوال تو همین زمینه دارم ؟؟؟
به نظر شما این روش که تویه هر دیتا ست چند تا Table داشته باشیم راه درستیه ؟؟؟ یا اینکه برای هر کدوم جدا جدا دیتا ست بسازیم بهتره ؟؟؟؟

hassan razavi
سه شنبه 08 آبان 1386, 09:28 صبح
اگه که بخواهید جدا حدا Dataset بسازید ، بهتره که جدا جدا DataTable بسازید و کار کنید. ولی در کل من توی یه مقاله خوندم که استفاده از DataTable بجای Dataset باعث افزایش سرعت و استفاده کمتر از حافظه میشه

اَرژنگ
سه شنبه 08 آبان 1386, 10:57 صبح
حالا من یه سوال تو همین زمینه دارم ؟؟؟
به نظر شما این روش که تویه هر دیتا ست چند تا Table داشته باشیم راه درستیه ؟؟؟ یا اینکه برای هر کدوم جدا جدا دیتا ست بسازیم بهتره ؟؟؟؟

هر دو روش روشهایه اشتباهی هستند، اگر با معماریه ۳ لایه کار کنید با ابجکت لیست هم سرعت و هم حافظه بهبود پیدا میکند.
یکی یک رپورت درست میکرد با ریختن داتا در داتاتیبل بعدش هم میریختش تو داتاگیرید، حداقل ۱۰ دقیقه سرور را میکشت تا اینکه جواب بده. با استفاده از داتا ریدر میشد که اآنی رپورت را دانلود کرد.

Devilprogramer
سه شنبه 08 آبان 1386, 13:21 عصر
datareader تو بعضی جاها خوبه و کلی سرعت بالا می بره مخصوصا تو کارای وبی درست .. اما باید دید دقیقاً چه کاری می خواین انجام بدین .. برای چند تا table دارای relation که می خوای با یه بار درست کردن dataset به همشون دسترسی داشته باشین ایده خوبیه که همه table ها رو با هم داشته باشین ولی با توجه به حجم دیتا و کاری که می خواین انجام بدین باید تصمیم بگیرین .. اگر table ها به هم ربطی ندارن و ضرورتی هم نیس که همشونو با هم داشته باشین جدا جدا dataset درست کنین بهتره .. البته نظر بقیه بزرگان ارجح تره!

اَرژنگ
سه شنبه 08 آبان 1386, 13:30 عصر
من هم با Devilprogramer (http://barnamenevis.org/forum/member.php?u=30005) موافقم، بستگی به فاکتورهایه مختلف راه‌هایه مختلف بر هم ارجعیت پیدا میکنند

benighted.boy
سه شنبه 08 آبان 1386, 21:05 عصر
البته من به یه مسئله که بر خوردم در یک فرم از چند دیتا ست استفاده کردم به مشکل خوردم.استفاده از دیتا ریدر عالیه اما اگه حجم رکورد غیر قابل پیش بینی باشه فکر میکنم به مشکل بخوره چون میاد از اول تا آخرین رکورد رو میخونه و ریپورت میده .در کل باز هم به نیاز برنامه بر میگرده .
حالا یه سوال ؟
چطور میشه تمام این عملیات فیلترینگ و .... رو به خود Database موکول کرد و فقط ریپورت پایانی رو از DB گرفت.فکر میکنم این راه در مورد حجم بالای دیتا منطقی تر باشه چون دیگه نیاز به خوندن کل اطلاعات نیست و فقط ریپورت پایانی که قراره به کاربر داده بشه از DB گرفته میشه .
کسی در این مورد نظری داره ؟

Mohammadmasih
پنج شنبه 03 مرداد 1398, 11:58 صبح
سلام و خدا قوت . من مشکلی برخورد کردم و برای راه حلش کمک میخوام لطفا دوستان کمک کنن .
من یک جدول دارم که هر فیلدش خودش یک جدول جداگانه است و اونها هم هرکدوم فرزندان خودشون رو دارن و باز هم اونها هم همینطور . یک فیلد کد در بین تمام جداول مشترک هست که یونیک هستش . حالا من میخوام ی سرچ براساس همون کد بنویسم که وقتی کاربر کد رو وارد کرد در تمام دیتابیس بچرخه و هر جدولی چه فرزند چه والد مربوط به اون کد رو در زک دیتاگریدویو نمایش بده . ممنون میشم کمکم کنید خیلی راه هدرو امتحان کردم جواب نداد و تو اینترنت هم چندروزی میشه سرچ میکنم اما نتونستم جواب بگیرم لطفا کمکم کنید