با سلام مجدد
دوستان عزیز مشکلم رو پیدا کردم و رفع شد. در اینجا یافته های خودمو در فروم های مختلف می زارم شاید به درد کسی بخوره
سوال: ارسال یک دیتاست (فیلتر شده یا نشده با یک یا چند جدول) دلخواه به گزارش استیمول سافت
پاسخ:
روش اول
یک:
از داخل محیط طراحی استیمول با خیال راحت به بانک sql کانکت بشین و گزارش دلخواه رو طراحی کنید.
دو:
در برنامه تون با هر روشی که دوست دارید داده های بانک رو واکشی کرده و در نهایت داخل یک dataTable یا dataset پر کنید.
سه:
برای فراخوانی گزارش طراحی شده و ارسال dataset مورد نظر از این کد استفاده کنید:خوب خط اول که همه میدونید یک نمونه جدید از گزارش رو می سازه و در خط دوم هم گزارشی که قبلا طراحی کرده بودیم رو به نمونه گزارش مون اختصاص میدیم.
StiReport Rep = new StiReport();
Rep.Load("Report_M2.mrt");
Rep.Dictionary.Clear();
Rep.RegData(ds);
Rep.Dictionary.Synchronize();
Rep.Show();
نکته اصلی در خط سوم است که میاد Dictionary رو خالی میکنه. مشابه دستور خط سوم دستور زیر هم وجود داره:که این دستور میاد دیتابیس های موجود در گزارش ساخته شده رو خالی می کنه و بعد میتونید دیتابیس جدید با دستور زیر بهش اختصاص بدید:
Rep.Dictionary.Databases.Clear();
و دقیقا اشکال کار من هم همین جا بود که با این دو دستور دیتابیس رو خالی می کردم و کانکشن استرینگ دیتابیس خودم رو بهش میدادم و همین باعث می شد دیتاستی که بعد از این دستور به ریپورتم پاس می کردم اعمال نمی شد و کل اطلاعات جدولم رو بهم نشون میداد نه رکورد های که در دیتاستم بود.
Rep.Dictionary.Databases.Add(new StiSqlDatabase("Conn", s));
چهارم:
خط چهارم به بعد هم که توسط دستورات RegData و Synchronize دیتاست خودتون رو به گزارش ارسال می کنید و نمایش می دید. در این روش اگر در گزارشتون از چندین جدول استفاده کرده باشید کافیه اون جداول در دیتاستی که دارین به گزارش ارسال می کنید اضافه کرده باشید و داخل اون موجود باشه.
روش دوم:
خوب دراین روش بجای ارسال دیتاست به گزارش، فیلتر ایجاد شده در برنامه رو بصورت متغیر به گزارش ارسال کنید. فرض کنید ما یک جدول داریم با 100 رکورد و با امکانات جستجویی که در فرم برنامه گذاشتیم، کاربر با انتخاب های دلخواه جدول رو فیلتر کرده و الان تعداد رکوردهایی که در datagrid داره می بینه 10 رکورد است. یک راه اینکه مثل روش اول دیتاست فیلتر شده 10 رکوردی رو به گزارش ارسال کنیم و یک راه دیگه اینکه شروط انتخاب شده توسط کاربر رو به گزارش ارسال کنیم. در واقع where ایجاد شده توسط کاربر رو بصورت یک متغیر رشته ای به گزارش ارسال می کنیم. کافیه در زمان طراحی از بخش Variables یک متغیر جدید ایجاد کنید و بعد روی دیتاست تون کلیک راست کرده و edit رو انتخاب کنید و در بخش Query text متغیر که در بخش Variables ایجاد کردید رو به انتهای دستور select اضافه کنید:در حال عادی می تونید محتوای variable رو یک شرط 1=1 بزارید تا بتونید داده های جدول رو ببینید ولی در برنامه تون می تونید مقدار این متغیر رو با where دلخواه خودتون پر کنید. در واقع با این کار عملیات Fill شدن داده از داخل گزارش انجام میشه.
select * from Table1 {variable}
البته روش های دیگه ای هم هست مثلا میتونید دیتا باند که در داخل ریپورت هست رو با یک فیلد یا شرط مشخص توسط یک پارامتر که از داخل برنامه مقدار دهی شه ، فیلتر کنید.
امیدوارم نوشته هام مفید بوده باشه.




 
			
			
 نقل قول: سوالات مربوط به StimulReport  رو در این تاپیک مطرح کنید
 نقل قول: سوالات مربوط به StimulReport  رو در این تاپیک مطرح کنید
				

 
					
					
					
					
				 
			