View Full Version : مشکل در ارسال نتیجه یک کوئری به استیمول سافت
aminbrleevb
سه شنبه 06 اسفند 1392, 20:05 عصر
با سلام
من قبلا می یومدم و نتایج یک دیتا کوئری رو وارد یک دیتاست میکردم و مثلا برای نمایش اون یک دیتا گرید میزاشتم که تا اینجا یک بار کوئری انجام میشد و بعد برای گزارش در استیمول سافت بازم یک بار دیگه کویری باید انجام میشد حالا سوالم اینه آیا میشه نتایج یک دیتا ست رو مستقیما بدون اینکه بخوام در گزارش دوباره درخواستی به دیتا بیسم داده بشه رو در گزارش دید. امیدوارم متوجه سوالم باشید من پست های زیادی رو دیدم مثلا تیکه کد زیر
DataSet ds = new DataSet();
dtSa.TableName = "dtSa";
ds.Tables.Add(dtSa);
Report.RegData(ds);
Report.Show();
ولی در کد بالا مشخص نشه که اطلاعات چگونه در گزارش نمایش داده میشه و اجزایی که در گزارش نیازه من اضافه کنم چیا هستند. اگه امکان داره اینو هم کمک کنید و یا اگه فایل پروژه ای چیزی دارین بزارین ممنون میشم خیلی کارم گیره ممنون از همتون
salehsam
سه شنبه 06 اسفند 1392, 22:05 عصر
حالا سوالم اینه آیا میشه نتایج یک دیتا سورس رو مستقیما بدون اینکه بخوام در گزارش دوباره درخواستی به دیتا بیشم داده بشه رو در گزارش دید. امیدوارم متوجه سوالم باشید
:متعجب::متفکر:
aminbrleevb
سه شنبه 06 اسفند 1392, 22:32 عصر
اشتباه تایپی بود و عجله داشتم دوست عزیز منظورم دیتا بیس بود و اشتباههی دیتا ست رو نوشتم دیتا سورس سوالم واضحه؟ پست ویرایش شد
aminbrleevb
سه شنبه 06 اسفند 1392, 22:33 عصر
وقتی یک کوئری اجرا میشه و ما نتیج رو توی یک دیتا ست دخیره میکنبم می خوام همین دیتا ست رو بفرستیم واسه نمایش به طوری که دیگه هیچ کوئری در استیمول اجرا نشه.
salehsam
سه شنبه 06 اسفند 1392, 23:17 عصر
اوکی
تا جایی که من میدونم و کار کردم با bussiness object میشه این کار رو انجام داد
فایلش رو برات آپلود کردم (لینک (http://uplod.ir/vvqiny2kloui/ef_picto_sti.rar.htm))
یه راهی هم هست که باید نتایج رو توی دیتاست بریزی و بدی به استیمول که من باهاش کار نکردم
Mohsen229266
چهارشنبه 07 اسفند 1392, 23:14 عصر
بله شما می تونید یک دیتاست به استیمول اضافه کنید روش کارشم خیلی سادست با استفاده از designerش میتوانید یک دیتاست ست کنید
aminbrleevb
پنج شنبه 08 اسفند 1392, 19:14 عصر
دوست عزیز میشه بیشتر توضیح بدین ممنون میشم
aslan
پنج شنبه 08 اسفند 1392, 20:00 عصر
سلام
دوست عزیز با فرض اینکه اسم دیتاست حاوی اطلاعاتتون ds است و فایل گزارشتون در مسیر ذکر شده در کدها هستش ..........
با کدهای زیر اطلاعات دیتاست به فایل گزارش ارسال خواهد شد ......میتونید اطلاعاتتون را در بخش دیکشنری فایل گزارش مشاهده کنید و فیل گزارشتون را تنظیم کنید ...........
stiReport1.Load("D:\\Report.mrt");
stiReport1.RegData("MyDataSet", ds);
stiReport1.Dictionary.Synchronize();
stiReport1.Compile();
stiReport1.Design();
stiReport1.Show(true);
aminbrleevb
جمعه 09 اسفند 1392, 03:50 صبح
aslan جان این ارور رو میده An unhandled exception of type 'System.InvalidOperationException' occurred in Stimulsoft.Report.dll
تو خط آخر stiReport1.Show(true);
aminbrleevb
جمعه 09 اسفند 1392, 03:50 صبح
aslan اگه ممکنه یک پروژه ساده بزارین تا ببینیم مشکل از کجاست ممنون میشم
در ضمن در خط stiReport1.Design(); فرم دیزاین باز میشه نه خود گزارش. ممنون میشم که بگید باید چی کار کنم مرسی
aminbrleevb
شنبه 10 اسفند 1392, 14:06 عصر
کمک کنید دوستان
aminbrleevb
شنبه 10 اسفند 1392, 20:27 عصر
سلام دوستان
و سایر دوستان aslan
اگه ممکنه یک پروژه ساده بزارین تا ببینیم مشکل از کجاست ممنون میشم
در ضمن در خط stiReport1.Design(); فرم دیزاین باز میشه نه خود گزارش. ممنون میشم که بگید باید چی کار کنم مرسی
aslan
شنبه 10 اسفند 1392, 20:39 عصر
سلام
متاسفانه نتونستم اینجا چیزی آپلود کنم
یه نمونه کوچک در لینک زیر قرار دادم
رفرنسهای استیمول را خودتون باید اضافه کنید ( حجم فایل زیاد میشد مجبور شدم حذف کنم )
http://www.4shared.com/zip/63IAxmgcce/Sample1.html
aminbrleevb
یک شنبه 11 اسفند 1392, 01:41 صبح
با سلام و تشکر
رفرنسهای استیمول را خودتون باید اضافه کنید ( حجم فایل زیاد میشد مجبور شدم حذف کنم ) ... میشه بگید منظورتون چی هست؟
....
برنامه خطا میده بازم خواهش میکنم باهام همکاری کنین تا مشکل حل بشه صمیمانه سپاسگزارم
اینم خطا
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in System.Windows.Forms.dll
Additional information: Could not load file or assembly 'Stimulsoft.Report, Version=2010.1.700.0, Culture=neutral, PublicKeyToken=ebe6666cba19647a' or one of its dependencies. The system cannot find the file specified.
انیجا خطا میده
Application.Run(new Form1());
aminbrleevb
یک شنبه 11 اسفند 1392, 01:46 صبح
برنامه کار کرد ولی مشکل اینه که وقتی خط stiReport1.Design(); اجرا میشه محیط دیزاین برنامه استیمول (محیط کار برنامه استیمول )باز میشه و تا نبندمش گزارش اجزا نمیشه
aslan
یک شنبه 11 اسفند 1392, 02:07 صبح
سلام
این لینک را مطالعه کنید :
http://barnamenevis.org/showthread.php?420402-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-%D8%AF%D8%B1-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-%D9%81%D8%A7%D9%82%D8%AF-Stimul&highlight=stimul+dll
aslan
یک شنبه 11 اسفند 1392, 02:08 صبح
برنامه کار کرد ولی مشکل اینه که وقتی خط stiReport1.Design(); اجرا میشه محیط دیزاین برنامه استیمول (محیط کار برنامه استیمول )باز میشه و تا نبندمش گزارش اجزا نمیشه
کافیه تو کدهاتون خط مربوط به strreport1.design() را حذف کنید
aminbrleevb
یک شنبه 11 اسفند 1392, 18:07 عصر
خوب تو برنامه ای که گزاشته اید برای هر سطر باید یک Rows.Add انجام بشه من دوست داشتم کل جدول یا یک دیتا ست گزارش فرستاده بشه ممکنه بگید چجور ؟ نمی خوام با یک حلقه همه سطر ها رو add کرد.
aslan عزیز پست شماره 8 همین تاپیک یه همچین چیزی هست ولی برام خطا میده میشه کدی که تو اون پست هست رو توضیح بدی
aslan
یک شنبه 11 اسفند 1392, 19:32 عصر
خوب تو برنامه ای که گزاشته اید برای هر سطر باید یک Rows.Add انجام بشه من دوست داشتم کل جدول یا یک دیتا ست گزارش فرستاده بشه ممکنه بگید چجور ؟ نمی خوام با یک حلقه همه سطر ها رو add کرد.
aslan عزیز پست شماره 8 همین تاپیک یه همچین چیزی هست ولی برام خطا میده میشه کدی که تو اون پست هست رو توضیح بدی
سلام
دوست عزیز اشتباه نکنید
اون فقط یه سمپل ه برای نحوه ارسال دیتاست به استیمول
شما دیگه لازم نیست چیزی را add کنین.
ظاهرا دیتاست تون اماده است پس کافیه دیتاست آماده را به استیمول ارسال کنید نه اینکه اونو دوباره ایجاد کنید ( پرسش شما هم تو این تاپیک اینه که از دوباره کاری برای ایجاد دوباره دیتاست پرهیز کنید البته اگر درست متوجه شده باشم )
پس دوباره یادآوری میکنم :
وقتی اطلاعات موردنیازتون در داخل دیتاست / دیتاتیبل آماده است .. نیازی به هیچ کار اضافی نیست .. فقط کافی است دیتاست را به استیمول ارسال کنید ... )
stiReport1.Load("D:\\Report.mrt");
stiReport1.RegData("MyDataSet", ds);
stiReport1.Dictionary.Synchronize();
stiReport1.Compile();
stiReport1.Design();
stiReport1.Show(true);
توضیح کد :
خط اول - لود فایل گزارش
خط دوم - ارسال دیتاست ds به استیمول
خط سوم - ایجاد جداول / ستونها / .. ی دیتاست در دیکشنری فایل گزارش ... ( هماهنگ / برابر سازی !!)
خط چهارم - کامپایل فایل گزارش
خط پنجم - فراهم نمودن امکان دیزاین مجدد فایل گزارش .... - در کد نهایی و بعد از دیزاین این کد حذف شود
خط ششم - نمایش فایل گزارش نهایی
موفق باشید
aminbrleevb
یک شنبه 11 اسفند 1392, 21:16 عصر
مشکل همینه که ارور میده این کد منه
private void button5_Click(object sender, EventArgs e)
{
string sql = "SELECT * FROM t_user where lname like '%" + textBox1.Text + "%';";
func1 fu1 = new func1();
DataSet ds = fu1.sql_query_ds(sql);
DataTable tbl1 = ds.Tables[0];
//////////
Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load("reporter1.mrt");
stiReport1.RegData(ds);
stiReport1.Dictionary.Synchronize();
stiReport1.Compile();
//stiReport1.Design();
stiReport1.Show(true);
}
A first chance exception of type 'System.InvalidOperationException' occurred in Stimulsoft.Report.dll
Additional information: ExecuteReader: CommandText property has not been initialized
[/PHP]
aslan
یک شنبه 11 اسفند 1392, 23:05 عصر
دوتا سوال :
1-نمونه ایکه ( پست 13 ) من لینکشو قرار دادم برای شما اجرا شد یا نه ؟
2- درخط Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
break point بزارید ببینید خطا قبل از این خط کد هست یا بعد از آن ؟
aminbrleevb
دوشنبه 12 اسفند 1392, 15:28 عصر
برنامه کار کرد ولی وقتی همون برنامه رو برای ارسال با دیتا ست تغییر دادم ارور میداد پست 20 و 14 هم ارور ها هستند خطا هم در خطر آخر یعنی stiReport1.Show(true); هست.
aslan
دوشنبه 12 اسفند 1392, 17:10 عصر
سلام
در حالت دیزاین ( stiReport1.Design(); )
اگردر دیکشنری فایل گزارش اطلاعاتتون وجود داره چک کنید ببینید با Preview گزارشتون درست نمایش داده میشه یا نه ؟
بهر حال اگر مشکلی داشتین پیشنهادم اینه که با یک فایل گزارش ( mrt) دیگه تست بزنید و ترجیحا این فایل گزارش جدید هم حاوی هیچ تنظیمی نباشه ( فایل خالی خالی ) که در اینصورت بایستی گزارشتون بدون خطا و بدون اطلاعات نمایش داده شود و ..................... ( قصدم اینه که مشخص بشه مشکل از فایل گزارشتون هست و یا چیزه دیگه ... )
aminbrleevb
دوشنبه 12 اسفند 1392, 20:44 عصر
بله برنامه در یک فایل خالی کار میکنه حالا بگید به این فرم گزارش خالی چی و با چه نامی اضافه کنم کد زیر هم مشخص میکنه که نام دیتا ست و جدولم در دیتا بیس چی هست. ممنون راستی خیلی گلی هواسم هست بهت.ماچ
private void button5_Click(object sender, EventArgs e)
{
string sql = "SELECT * FROM t_user where lname like '%" + textBox1.Text + "%';";
func1 fu1 = new func1();
DataSet ds = fu1.sql_query_ds(sql);
DataTable tbl1 = ds.Tables[0];
//////////
Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load("reporter1.mrt");
stiReport1.RegData(ds);
stiReport1.Dictionary.Synchronize();
stiReport1.Compile();
//stiReport1.Design();
stiReport1.Show(true);
}
aslan
دوشنبه 12 اسفند 1392, 21:11 عصر
خب.حالا کافیه این خط کد
stiReport1.Design();
اجرا بشه ...
وقتی دیزاینر باز شد از سمت چپ هر چی لازم دارین بکشین بیارین روی فایل گزارش ( page header / page footer / data / ........)
در سمت راست ( Data Source / Dictionary ) دیتاست / دیتا تیبل / ستونهای جدول و ........... هم باید باشه .. هر چی لازم دارین بکشین بیارین رو فایل گزارش )
وقتی دیزاین فایل تموم شد اونو save کنید
احتمالا نباید دیگه مشکلی مونده باشه
نهایتا وقتی همه چی ok شد خط کد مربو به نمایش دیزاینر را از کدهاتون حذف کنید
موفق باشین
aminbrleevb
دوشنبه 12 اسفند 1392, 23:49 عصر
دوست عزیز مرسی ولی ما بازم رفتیم رو پله اول
مثلا من اومدم و یک تیبل رو به گزارشم درگ کردم وقتی پریویو میزنم همه فیلدهای اون تیبل نمایش داده میشه که طبیعیه ولی وقتی از طریق برنامه گزارش رو اجرا می کنم نم ی خوام که همه نمایش داده بشن مثلا برای تیکه کد پست 24 بازم همه فیلدها نمایش داده میشه من می خوام دیتا ستی که تو برنامه پر شده نمایش داده بشه . امیدوارم خوب منظورمو رسونده باشم.و قبلا هم گفتم نمی خوام هیچ گونه کوئری تو گزارش گیری مجددا اجرا بشه یعنی یک بار کوئری اجرا بشه و یک دیتا ست پر بشه و به گزارش فرستاده بشه تا نمایش داده بشه. فقط همین
مثلا من می خوام فقط فیلدی که ایدی اون برابر یک هست نمایش داده بشه و قبلا هم تو دیتا ست قرار گرفته.
ممنون میشم توضیح بدین با تشکر
aslan
سه شنبه 13 اسفند 1392, 00:33 صبح
اگر منظورتون از فیلد در نوشته بالا رکورد باشه و ..... چیزه دیگه ای به فایل گزارش اضافه نکرده باشین ( مثلا new connection و .... نکرده باشین )
گزارش باید در هر لحظه فقط رکوردهای را نشون بده که در دیتاست ذخیره شده باشن و نه رکورد دیگه ای .............
خط کد پائین را هم به کدهاتون اضافه کنید :
stiReport1.Dictionary.DataStore.Clear();
stiReport1.RegData(ds);
aslan
سه شنبه 13 اسفند 1392, 00:34 صبح
اگر منظورتون از فیلد در نوشته بالا رکورد باشه و ..... چیزه دیگه ای به فایل گزارش اضافه نکرده باشین ( مثلا new connection و .... نکرده باشین )
گزارش باید در هر لحظه فقط رکوردهای را نشون بده که در دیتاست ذخیره شده باشن و نه رکورد دیگه ای .............
خط کد پائین را هم به کدهاتون اضافه کنید :
stiReport1.Dictionary.DataStore.Clear();
stiReport1.RegData(ds);
aminbrleevb
سه شنبه 13 اسفند 1392, 12:25 عصر
آقا جواب نمیده.
ببین دوست عزیز شما خوب توضیح میدیم من متوجه نمیشم.
تو پست بالا چجوری امکان داره ( مثلا new connection و .... نکرده باشین ) رو اضافه نکنم و چیزی نشون بده ؟
دوست عزیز من فرم خام گزارش رو گزاشتم و یک صفحه گزارش خالی برام نمایش داد فقط همین آیا new conection باید اضافه کنم چیزهایی که باید بهش اضافه کنم رو بهم بگو یا حد اقل یک فایل گزارش بزار برام که با کد زیر کار کنه و اگه کد هم مشکلی داره بهم بگو.صمیمانه قدردانم
private void button5_Click(object sender, EventArgs e)
{
string sql = "SELECT * FROM t_user where lname like '%" + textBox1.Text + "%';";
func1 fu1 = new func1();
DataSet ds = fu1.sql_query_ds(sql);
DataTable tbl1 = ds.Tables[0];
//////////
Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load("reporter2.mrt");
stiReport1.Dictionary.DataStore.Clear();
//stiReport1.RegData(ds);
stiReport1.RegData(tbl1);
stiReport1.Dictionary.Synchronize();
stiReport1.Dictionary.DataStore.Clear();
stiReport1.Compile();
//stiReport1.Design();
stiReport1.Show(true);
}
aslan
سه شنبه 13 اسفند 1392, 13:29 عصر
سلام
دوست عزیز من همه چیزو در این رابطه بهتون گفتم
دقت کنید :
new connection
تعیین دیتاسورس و ....
برای ارتباط با بانک اطلاعاتی و واکشی اطلاعات از جداول برای استفاده از آنها در فایل گزارش هستش . درسته ؟
وقتی شما اطلاعات مورد نیازتون را از طریق کدنویسی در مثلا سی شارپ بدست آوردین و در داخل دیتاست / دیتاتیبل / ..... وجود داره دیگه نیازی به ایجاد ارتباط با بانک اطلاعاتی و ......... در فایل گزارش نیییییییییییسسسسسسسسسستتت تتتت
فقط کافیه کارهایی که قبلا گفتم و انجام بدین . همین
وقتی دیتاست و ... را به استیمول می فرستین و بعد ش میاین در فایل گزارشتون کانکشن ایجاد میکنید و دیتاسورس تعریف می کنید و ............
اطلاعات دیتاست ارسالی در نظر گرفته نمیشه و کل اطلاعات بانک نمایش داده میشه ............
در ضمن اگر مشکلتون حل نشد فایل گزارشتون را اینجا قرار بدین ( فایل mrt )
aslan
سه شنبه 13 اسفند 1392, 13:35 عصر
آقا جواب نمیده.
ببین دوست عزیز شما خوب توضیح میدیم من متوجه نمیشم.
تو پست بالا چجوری امکان داره ( مثلا new connection و .... نکرده باشین ) رو اضافه نکنم و چیزی نشون بده ؟
دوست عزیز من فرم خام گزارش رو گزاشتم و یک صفحه گزارش خالی برام نمایش داد فقط همین آیا new conection باید اضافه کنم چیزهایی که باید بهش اضافه کنم رو بهم بگو یا حد اقل یک فایل گزارش بزار برام که با کد زیر کار کنه و اگه کد هم مشکلی داره بهم بگو.صمیمانه قدردانم
private void button5_Click(object sender, EventArgs e)
{
string sql = "SELECT * FROM t_user where lname like '%" + textBox1.Text + "%';";
func1 fu1 = new func1();
DataSet ds = fu1.sql_query_ds(sql);
DataTable tbl1 = ds.Tables[0];
//////////
Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load("reporter2.mrt");
stiReport1.Dictionary.DataStore.Clear();
//stiReport1.RegData(ds);
stiReport1.RegData(tbl1);
stiReport1.Dictionary.Synchronize();
stiReport1.Dictionary.DataStore.Clear();
stiReport1.Compile();
//stiReport1.Design();
stiReport1.Show(true);
}
stiReport1.Dictionary.DataStore.Clear(); دوم را از کدهاتون حذف کنید
aminbrleevb
سه شنبه 13 اسفند 1392, 13:42 عصر
بالاخره مشکل رو فهمیدم من باید ستون ها رو خودم تعریف کنم تو گزارش وگرنه خودش اونارو نمیسازه یک ستون ایدی ساختن نمایش داد بدون مشکل ولی کاش حتی ستون ها رو هم از داخل دیتاست قبول میکرد
Mohsen229266
سه شنبه 13 اسفند 1392, 18:07 عصر
می تونی داینامیک بنویسی که البته دردسرش زیادهاگه ریپورتات کمه توصیه میکنم از designش کنی
aminbrleevb
چهارشنبه 14 اسفند 1392, 15:42 عصر
لطفا به این سوال پاسخ بدین
http://barnamenevis.org/showthread.php?443715-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%AF%D9%88-%D8%AA%DB%8C%D8%A8%D9%84-%D8%A8%D9%87-%D8%A7%D8%B3%D8%AA%DB%8C%D9%85%D9%88%D9%84
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.