PDA

View Full Version : سوال: داشتن بیشتر از یک TableAdapter



ehsan barname
چهارشنبه 18 فروردین 1389, 12:10 عصر
سلام
دوستان عزیز تو رو خدا کمکم کنید:عصبانی++::عصبانی++:
من وقتی تعداد TableAdapter هام در DataSet بیشتر از یکی میشود گزارشاتم را نمایش نمی دهد لطفا کمکم کنید در ضمن کدم #C

mn_zandy63
جمعه 20 فروردین 1389, 01:18 صبح
سلام دوست من، نباید ربط داشته باشه،
لطفا پروژه ات رو بذار اینجا، ببینیم چه کدی نوشتی.

موفق باشی

ehsan barname
شنبه 21 فروردین 1389, 11:25 صبح
سلام دوست من، نباید ربط داشته باشه،
لطفا پروژه ات رو بذار اینجا، ببینیم چه کدی نوشتی.

موفق باشی

مرسی خیلی ممنون می شم اگه کمکم کنید
اون قسمت از کدم رو که مربوط به SetDataSource و DataSetم میشه رو براتون می ذارم

ممنون




DataSet Machinery = dtMachineryRpt.getQueryByCommand(strQ);
DataSet Machinery2 = dtMachineryRpt.getQueryByCommand(strQ2);
DataSet Machinery3 = dtMachineryRpt.getQueryByCommand(strQ3);
DataSet Machinery4 = dtMachineryRpt.getQueryByCommand(strQ4);
DataSet Machinery5 = dtMachineryRpt.getQueryByCommand(strQ5);
DataSet Machinery6 = dtMachineryRpt.getQueryByCommand(strQ6);
DataSet Machinery7 = dtMachineryRpt.getQueryByCommand(strQ7);
DataSet Machinery8 = dtMachineryRpt.getQueryByCommand(strQ8);
DataSet Machinery9 = dtMachineryRpt.getQueryByCommand(strQ9);
crsRptCostMachinery.ReportDocument.Database.Tables[0].SetDataSource(Machinery.Tables[0]);
crsRptCostMachinery.ReportDocument.Database.Tables[0].SetDataSource(Machinery2.Tables[0]);
crsRptCostMachinery.ReportDocument.Database.Tables[0].SetDataSource(Machinery3.Tables[0]);
crsRptCostMachinery.ReportDocument.Database.Tables[0].SetDataSource(Machinery4.Tables[0]);
crsRptCostMachinery.ReportDocument.Database.Tables[0].SetDataSource(Machinery5.Tables[0]);
crsRptCostMachinery.ReportDocument.Database.Tables[0].SetDataSource(Machinery6.Tables[0]);
crsRptCostMachinery.ReportDocument.Database.Tables[0].SetDataSource(Machinery7.Tables[0]);
crsRptCostMachinery.ReportDocument.Database.Tables[0].SetDataSource(Machinery8.Tables[0]);
crsRptCostMachinery.ReportDocument.Database.Tables[0].SetDataSource(Machinery9.Tables[0]);
for (int i = 0; i < crsRptCostMachinery.ReportDocument.DataSourceConne ctions.Count;i++ )
crsRptCostMachinery.ReportDocument.DataSourceConne ctions[i].SetConnection(dtMachineryRpt.aServer, dtMachineryRpt.aDB, dtMachineryRpt.aUser, dtMachineryRpt.aPass);

crsRptCostMachinery.ReportDocument.Refresh();
crvCostMachinery.RefreshReport();

mn_zandy63
شنبه 21 فروردین 1389, 21:39 عصر
چرا همه این سطر ها اندیس 0 هستند؟

crsRptCostMachinery.ReportDocument.Database.Tables[0]

ehsan barname
یک شنبه 22 فروردین 1389, 09:20 صبح
راستش خودمم اولین بار به ترتیب اندیسها رو وارد کردم ولی در زمان اجرا Error می داد که مثلا Table[1 رو نمی تونه پیدا کنه ولی وقتی همه رو صفر کردم دیگه حداقل Run Time Error نداشتم. :خجالت::گیج::لبخندساده:

mn_zandy63
یک شنبه 22 فروردین 1389, 23:23 عصر
خب با این تفاسیر من فکر میکنم باید پروژه ات و گزارشت رو بذاری.
چون مشخص نیست دلیل این شکلی نوشتن کدت چیه :چشمک:

ehsan barname
دوشنبه 23 فروردین 1389, 09:41 صبح
خب با این تفاسیر من فکر میکنم باید پروژه ات و گزارشت رو بذاری.
چون مشخص نیست دلیل این شکلی نوشتن کدت چیه :چشمک:

راستش این پروژه خیلی بزرگتر از اینه که بتونم براتون بذارم ولی در این حد می تونم براتون توضیح بدم که در این گزارشم یک سری فیلتر دارم که توسط تابع getQueryByCommand خودمQuery فیلترینگام رو به DataSetی که ساختم پاس دادم

DataSet Machinery = dtMachineryRpt.getQueryByCommand(strQ);

و این DataSet رو توسط SetDataSource به CrystalReportSourceم پاس دادم

crsRptCostMachinery.ReportDocument.Database.Tables[0].SetDataSource(Machinery.Tables[0]);

و چون 9 تا TableAdapter دارم که هر کدام باید به صورت جداگانه در ستونهای گزارشم نمایش داده شود (البته همونطوری که قبلا خدمتون عرض کردم اول اندیسها رو از صفر تا هشت گذاشته بودم که Error داد و...) برای 9 تا DataSet به صورت جداگانه این کار رو انجام دادم و به همین علت برای DataSourceConnections یک for گذاشتم

for (int i = 0; i < crsRptCostMachinery.ReportDocument.DataSourceConne ctions.Count; i++)
crsRptCostMachinery.ReportDocument.DataSourceConne ctions[i].SetConnection(dtMachineryRpt.aServer, dtMachineryRpt.aDB, dtMachineryRpt.aUser, dtMachineryRpt.aPass);

حالا بازم اگر جاییش براتون نامفهوم بفرمایید تا براتون توضیح بدم.:متفکر::لبخندساده:

البته اگر اینجوری نمیتونید کمکم کنید با کد من کاری نداشته باشید. خودتون در یک چنین گزارشی چه کدی می نویسید؟

مرسی:قلب:

mn_zandy63
یک شنبه 29 فروردین 1389, 00:56 صبح
سلام دوست من،
خب فرض کنیم، چند تا Table Adapter داریم که قراره داخل گزارش استفاده بشه.
این معنیش اینه که من از Generated dataset ها دارم استفاده میکنم، فرض کنیم یه Dataset دارم که همه این TableAdapter ها مربوط به اونن.
خب من جدولهای مورد نیازم از اون دیتاست رو با TableAdapter های مربوطه Fill میکنم. بعد اون دیتاست رو با SetDataSource میفرستم برای کریستال.

اما چیزی که اینجا به دارم میبینم و متوجه نمیشم اینه که شما یه جا SetDataSource کردی احتمالا با datatable و یه جا Connection فرستادی برای گزارش.
بعد اونجا که داری SetDataSource میکنی، عملا وقتی اندیس Table همیشه صفره، در واقع شما 8 تا خط بالا رو بیخود نوشتی، فقط خط نهم معنی میده.
لطف کن، حداقل فایل گزارشت رو بذار اینجا من اصلا درک نمیکنم طراحی گزارشت رو.

موفق باشی

ehsan barname
یک شنبه 29 فروردین 1389, 09:46 صبح
سلام دوست من،
خب فرض کنیم، چند تا Table Adapter داریم که قراره داخل گزارش استفاده بشه.
این معنیش اینه که من از Generated dataset ها دارم استفاده میکنم، فرض کنیم یه Dataset دارم که همه این TableAdapter ها مربوط به اونن.
خب من جدولهای مورد نیازم از اون دیتاست رو با TableAdapter های مربوطه Fill میکنم. بعد اون دیتاست رو با SetDataSource میفرستم برای کریستال.


سلام
و بینهایت ازتون ممنونم که هنوز من رو فراموش نکردید
دوست عزیز شما درست می فرمایید ولی هرکدام از این TableAdapter ها باید با تاریخ وارد شده توسط کاربر فیلتر بشن تا گزارشه محدوده تاریخی که کاربر درخواست کرده نمایش داده شود پس باید جدا جدا توسط SetDataSource برای کریستال ارسال بشه حالا شمادر این حالت چگونه این کار رو می کنید؟

پیشاپیش از وقتی که برای سوال من صرف می کنید تشکر می کنم

mn_zandy63
یک شنبه 29 فروردین 1389, 12:58 عصر
سلام دوست من،
من متوجه نمیشم، که چرا باید جدا جدا Set Data source شه.
منظورت اینه که فیلتر رو کریستال داره انجام میده؟ :متفکر:
یه کار کن، فایل گزارشت رو بذار اینجا، من این شکلی گیج شدم، نمیدونم طراحی گزارشت رو.
ممنون.
موفق باشی