PDA

View Full Version : سوال: گزارشگیری در stimul soft از طریق کد نویسی



farhan1
پنج شنبه 05 اردیبهشت 1392, 12:30 عصر
خدمت اساتید عرض سلام و ارادت و خسته نباشید

بنده تازه شروع به گزارشگیری با stimulsoft کرده ام و گزارشگیری بر اساس ویزارد و غیره مشکلی ندارم و تا جایی که تونستم در اینترنت و یا تایپیک گزارشگیری سرچ کرده ولی نتیجه ای نگرفتم با توجه به نکته دوستان و غیره باید از طریق dataset آن هم اول باید از طریق bindingsource به کانکشن وصل شد سپس dataset مربوطه تشکیل شده و می توان در stireport گزارش تهیه نمود .حال با توجه به اینکه کانکشن من به صورت کلاس تعریف شده و نمی خواهم bindingsource را در فرم درگ کنم چون سرعت برنامه پایین اومده از طرفی بعدا برنامه در یک سیستم دیگر و با یک سروز دیگرکه sql نصب است دچار مشکل شده . حال من چگونه گزارشم را براساس کد نویسی تهیه کنم. طوری که اطلاعات جدولم را از بانک خونده و سپس در استیمول گزارش تهیه نمایم.
این هم کد کانکشن:
103311

farhan1
پنج شنبه 05 اردیبهشت 1392, 12:59 عصر
واین نکته که من برای 50 تا فرم نمی خواهم bindingsource بزارم تا dataset مربوطه فراخوانی بشه

farhan1
پنج شنبه 05 اردیبهشت 1392, 13:22 عصر
کسی نیست کمک کنه

aslan
پنج شنبه 05 اردیبهشت 1392, 13:55 عصر
سلام
دوست عزیز
شما کافیه اطلاعاتتون را ( بدون توجه به اینکه به چه طریقی جمع آوری کردین - کانکشنتون چیه - و.........) بصورت Datatable یا Dataset , .... به فایل گزارشتون ارسال کنین و ........

farhan1
پنج شنبه 05 اردیبهشت 1392, 14:20 عصر
میشه لطف کنید بگید چطوری

aslan
پنج شنبه 05 اردیبهشت 1392, 14:51 عصر
دوست عزیز فکر کنم اگه سرچ کنی کلی نمونه میتونی پیدا کنی .
مثلا لینک زیر را ببینید :

http://stimulsoft.blogfa.com/

farhan1
پنج شنبه 05 اردیبهشت 1392, 14:56 عصر
لینکی که گذاشتید مشکل داره

farhan1
پنج شنبه 05 اردیبهشت 1392, 14:57 عصر
کسی نیست کمک کنه من 3 روزه وقت برای این کار گذاشتم

aslan
پنج شنبه 05 اردیبهشت 1392, 15:13 عصر
سلام
من که در لینک مشکلی نمیبینم
بهر حال اینو ببینید :
103316

farhan1
پنج شنبه 05 اردیبهشت 1392, 15:37 عصر
شما می تونی از دیتا تیبل استفاده کنی و اطلاعات گزارشت رو به Stimulsoft پاس بدی .(یعنی شما داخل C#‎ خروجی گزارشت رو داخل یک دیتاتیبل میریزی و اون دیتاتیبل رو به گزارش stimul پاس می دی )


SqlConnection cn = new SqlConnection();
cn.ConnectionString = "Data Source=(Local);Initial Catalog=MahdiDB;User ID=1;Password=1;Trusted_Connection=False;";
SqlCommand cmd = new SqlCommand("select * from FaultReport where DateConnect='' OR TimeConnect=''");
cmd.Connection = cn;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
stiReport1.RegData("DataSource1", dt);
stiReport1.Compile();
stiReport1.Render(true);
stiReport1.Show();


بعد داخل صفحه design مربوط به stiReport1 این کارو می کنی .

توی Dictionary یک new DataSource می زنی و بعد این گزینه رو انتخاب می کنی Data from Dataset ,Data tables

حالا در قسمت Name in Source عبارت dt رو تایپ کن و در قسمت Name و Alias عبارت DataSource1 رو تایپ کن و در قسمت columns یکی یکی ستونهای خروجی گزارشت رو درست کن.

یکی از دوستان این کد را سفارش کرده من این کار انجام دادم ولی باز صفحه سفید تو گزارش لود میشه

farhan1
پنج شنبه 05 اردیبهشت 1392, 15:40 عصر
در کد بالا در scm نباید جدول مربوطه را فراخوانی کنیم.
scm.commandtext="select * from semat";

farhan1
پنج شنبه 05 اردیبهشت 1392, 15:41 عصر
private void btnprint_Click(object sender, EventArgs e)

{

con.scn.ToString();

scm.Connection = con.scn;

scm.CommandText =

"SELECT * FROM name_semat ";

da=

new SqlDataAdapter(scm);



DataTable dt = new DataTable();

da.Fill(dt);

stiReport1.RegData(

"sematreport",dt);

stiReport1.Compile();

stiReport1.Render(

true);

stiReport1.Show();

}
کدی که با توجه به توضیحات بالا نوشتم

aslan
پنج شنبه 05 اردیبهشت 1392, 17:33 عصر
سلام
در مسیر فایل اجرایی تون یک فایل خالی گزارش ( بنام مثلا ReportSample.mrt ) درست کنید
بعدا در کد برنامه تون بعد از ایجاد و پرکردن دیتاتیبل ( اینجا dt ) . کد زیر را بنویسید .


Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + "\\ReportSample.mrt");
stiReport1.RegData("view", dt);
stiReport1.Design();
stiReport1.Compile();
stiReport1.Show();

با اجرای برنامه گزارشتون را طراحی کنید . بعد از اتمام کار فایل گزارش را save کنید
در اجراهای بعدی خط زیر را حذف کنید :

stiReport1.Design();

farhan1
پنج شنبه 05 اردیبهشت 1392, 23:54 عصر
این کدی که شما پیشنهاد دادید همان گزارشگیری RunTime نمی باشد

aslan
جمعه 06 اردیبهشت 1392, 10:15 صبح
این کدی که شما پیشنهاد دادید همان گزارشگیری RunTime نمی باشد
نه
اون چیزی که مدنظر شماست اینه که همه اجزای گزارش ( فرم / هیدر / گروهبندی / دیتاباند/ فوتر و تکست باکس ها و ............ طراحی فرم و...) از طریق کدنویسی داخل برنامه صورت بگیره .......

farhan1
جمعه 06 اردیبهشت 1392, 10:47 صبح
103340

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

farhan1
جمعه 06 اردیبهشت 1392, 10:51 صبح
در مسیر bin/debug یه ارور دیگه میده

farhan1
جمعه 06 اردیبهشت 1392, 10:53 صبح
103342
گزارش در مسیر bin/debug گپی کردم اما این error میده

aslan
جمعه 06 اردیبهشت 1392, 11:16 صبح
سلام
قبل از ارسال dt بایستی فایل گزارش را معرفی بکنید
سطر دوم از کد را ( پست 13 همین تاپیک ) فراموش کرده اید

farhan1
جمعه 06 اردیبهشت 1392, 12:14 عصر
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + "E:\\empshoraha\\empshoragha\\empshoragha\\Report1. mrt");
بدین صورت باشه

aslan
جمعه 06 اردیبهشت 1392, 12:41 عصر
نه . به اینصورت

stiReport1.Load(System.Windows.Forms.Application.S tartupPath + "\\Report1.mrt");
در ضمن Report1.mrt هم در مسیر debug\bin باشه

farhan1
جمعه 06 اردیبهشت 1392, 12:48 عصر
ارور پست 18 میده

aslan
جمعه 06 اردیبهشت 1392, 13:00 عصر
نام فایلتون Report.mrt هستش یا Report1.mrt ؟
اگه مشکلتون حل نشد فایل گزارش و این تکه از کدتون را بصورت فایل برام بفرستین

farhan1
جمعه 06 اردیبهشت 1392, 13:48 عصر
private


void btnprint_Click(object sender, EventArgs e)

{



SqlCommand scm = new SqlCommand();

con.scn.ToString();

scm.Connection = con.scn;

scm.CommandText =

"SELECT * FROM name_semat ";

da.SelectCommand = scm;



DataTable dt3 = new DataTable();

da.Fill(dt3);

Stimulsoft.Report.

StiReport stiReport1 = new Stimulsoft.Report.StiReport();

stiReport1.Load(System.Windows.Forms.

Application.StartupPath + "\\Report1.mrt");

stiReport1.RegData(

"name_semat", dt3);

stiReport1.Design();

stiReport1.Compile();

stiReport1.Show();



}

فایل هم Report1.mrt در bin/debug است

aslan
جمعه 06 اردیبهشت 1392, 14:04 عصر
سلام
دوست عزیز - من با همین کدهای زیر تست کردم و جواب گرفتم :


/*

SqlCommand scm = newSqlCommand();
con.scn.ToString();
scm.Connection = con.scn;
scm.CommandText ="SELECT * FROM name_semat ";
da.SelectCommand = scm;
DataTable dt3 = new DataTable();
da.Fill(dt3);

*/

DataTable dt3 = new DataTable("tblTest");
DataRow dr;

dt3.Columns.Add("Name", typeof(string));
dt3.Columns.Add("Add1", typeof(string));
dt3.Columns.Add("Add2", typeof(string));

dr = dt3.NewRow();
dr["Name"] = "111";
dr["Add1"] = "222";
dr["Add2"] = "333";
dt3.Rows.Add(dr);

dr = dt3.NewRow();
dr["Name"] = "4444";
dr["Add1"] = "5555";
dr["Add2"] = "6666";
dt3.Rows.Add(dr);

dr = dt3.NewRow();
dr["Name"] = "7777";
dr["Add1"] = "8888";
dr["Add2"] = "9999";
dt3.Rows.Add(dr);


Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + "\\Report1.mrt");

stiReport1.RegData("name_semat", dt3);
// stiReport1.Design();
stiReport1.Compile();
stiReport1.Show();

فقط باید دقت کنید که :
نام فایل گزارشتون درست باشه و در مسیر فایل اجرایی پروژه
Target Framework پروژه تون هم روی Net FrameWork 4. باشه

farhan1
جمعه 06 اردیبهشت 1392, 14:31 عصر
واقعا دستتون درد نکنه یه دنیا ممنون

hosseinrasouli
شنبه 07 اردیبهشت 1392, 09:42 صبح
میتونید از گزارش این برنامه استفاده کنید . ( از طریق کد نویسی در stimul report بسیار ساده ) کدنویسی با دیتاست ها و پارامترها
http://barnamenevis.org/showthread.php?384081-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%DB%8C%D8%A7%D8%AF%D8%AF%D8%A7%D8%B4%D8%AA-%D8%A8%D8%B1%D8%AF%D8%A7%D8%B1%DB%8C-%D8%A8%D8%A7-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-3-%D9%84%D8%A7%DB%8C%D9%87