PDA

View Full Version : ارسال دیتاسورس گرید ویو به گزارش استیمول ریپورت



sirvan-me
جمعه 19 مهر 1392, 11:32 صبح
سلام به همه ی دوستان من در برنامم یه گرید ویو دارم که دیتاسورسشو با استفاده از ارتباط و Query های مربوط به JOIN پر می کنم... کاربر می تونه یه سری از اطلاعات تو گرید رو تغییر بده.... بعد از اعمال تغییرات روی چاپ کلیک می کنه و گزارش نمایش داده میشه...

می خواستم بدونم چطور میشه دیتاسورس یه گرید رو به گزارش استیمول پاس داد... این رو میدونم که میشه دیتاسورس گرید رو به صورت :


DataTable dt = (myDatagridView.DataSource as DataTable)


به دست آورد اما چطوری سمت استیول فیلدهارو شناسایی کنم و اصلا اینکه اینطرف چطوری ارسال کنم...
ممنون میشم راهنمایی بفرمائید

khokhan
جمعه 19 مهر 1392, 12:11 عصر
سلام به همه ی دوستان من در برنامم یه گرید ویو دارم که دیتاسورسشو با استفاده از ارتباط و Query های مربوط به JOIN پر می کنم... کاربر می تونه یه سری از اطلاعات تو گرید رو تغییر بده.... بعد از اعمال تغییرات روی چاپ کلیک می کنه و گزارش نمایش داده میشه...

می خواستم بدونم چطور میشه دیتاسورس یه گرید رو به گزارش استیمول پاس داد... این رو میدونم که میشه دیتاسورس گرید رو به صورت :


DataTable dt = (myDatagridView.DataSource as DataTable)


به دست آورد اما چطوری سمت استیول فیلدهارو شناسایی کنم و اصلا اینکه اینطرف چطوری ارسال کنم...
ممنون میشم راهنمایی بفرمائید


بهترین کار اینه که با یه متد ستونها و ردیفهای موجود در دیتا گرید رو بریزین داخل یه دیتاتیبل البته اون کدی که شما گذاشتین درسته اما ناقصه :لبخند:

اینطوری :

DataTable table = new DataTable("DGV_SelectedRows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
خوب الان دیتا تیبل آماده شده و منتظره تا بره به سمت گزارش در این حال لازم نیست توی فایل گزارش منبع داده تعریف کرده باشین
فقط یه فایل ساده بدون اطلاعات در پوشه root پروژه ذخیره کنین و در ادامه اون فایل رو از طریق کد نویسی معرفی کنین و دیتا تیبل موجود رو براش اختصاص بدین
اینطوری

DataSet Ds = new DataSet();
Ds.Tables.Add(table);

Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + @"\TestReport.mrt");
stiReport1.RegData(table);
تا این مرحله مشکل پاس دادن حل شده و باستی بتونین به محیط دیزاین گزارش دست پیدا کنین تا تیبل ارسال شده و فیلدهای موجودش رو
در فرم گزارش جا بدین به این منظور این یه خط رو هم به دستوراتتون اضافه کنین :

stiReport1.Design();
البته اگه کارتون با طراحی گزارش تموم شد می تونین بعدا این یه خط رو بردارین یا کامنت کنین :لبخند:

ودر خاتمه یه خط کد کافی است تا گزارش نشون داده بشه
اینطوری :

stiReport1.Show();

به طور کلی همه دستورات دکمه گزارشتون به این صورت در می آد :

private void button2_Click(object sender, EventArgs e)
{
DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);

Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + @"\TestReport.mrt");
stiReport1.RegData(table);
stiReport1.Design();
stiReport1.Show();
}

angoori
جمعه 19 مهر 1392, 16:20 عصر
سلام
منم یه مشکل دارم اینکه تمام این کارا رو میکنم ولی اون ستونی که حاوی عکس هست رو نشون نمیده و مینویسه System.Byte[]
چطوری میشه تبدیلات لازم رو انجام داد ؟

khokhan
جمعه 19 مهر 1392, 16:23 عصر
سلام
منم یه مشکل دارم اینکه تمام این کارا رو میکنم ولی اون ستونی که حاوی عکس هست رو نشون نمیده و مینویسه System.Byte[]
چطوری میشه تبدیلات لازم رو انجام داد ؟
این نمونه با معماری entity framwork کار شده و کامل وجامع هست و تصاویر موجود در دیتابیس رو در گزارش نشون می ده
بازم اگه مشکلی بود بگو

sirvan-me
یک شنبه 21 مهر 1392, 10:15 صبح
بهترین کار اینه که با یه متد ستونها و ردیفهای موجود در دیتا گرید رو بریزین داخل یه دیتاتیبل البته اون کدی که شما گذاشتین درسته اما ناقصه :لبخند:

اینطوری :

DataTable table = new DataTable("DGV_SelectedRows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
خوب الان دیتا تیبل آماده شده و منتظره تا بره به سمت گزارش در این حال لازم نیست توی فایل گزارش منبع داده تعریف کرده باشین
فقط یه فایل ساده بدون اطلاعات در پوشه root پروژه ذخیره کنین و در ادامه اون فایل رو از طریق کد نویسی معرفی کنین و دیتا تیبل موجود رو براش اختصاص بدین
اینطوری

DataSet Ds = new DataSet();
Ds.Tables.Add(table);

Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + @"\TestReport.mrt");
stiReport1.RegData(table);
تا این مرحله مشکل پاس دادن حل شده و باستی بتونین به محیط دیزاین گزارش دست پیدا کنین تا تیبل ارسال شده و فیلدهای موجودش رو
در فرم گزارش جا بدین به این منظور این یه خط رو هم به دستوراتتون اضافه کنین :

stiReport1.Design();
البته اگه کارتون با طراحی گزارش تموم شد می تونین بعدا این یه خط رو بردارین یا کامنت کنین :لبخند:

ودر خاتمه یه خط کد کافی است تا گزارش نشون داده بشه
اینطوری :

stiReport1.Show();

به طور کلی همه دستورات دکمه گزارشتون به این صورت در می آد :

private void button2_Click(object sender, EventArgs e)
{
DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);

Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + @"\TestReport.mrt");
stiReport1.RegData(table);
stiReport1.Design();
stiReport1.Show();
}


ممنون بابت راهنمائیت... من با همون یه خط کدی که گفتم دیتاسورس گرید رو درآوردم ( بدون هیچگونه مشکلی )
سمت Stimul یه DataSource هم ایم با دیتاتیبلی که قراره از سمت C# پاس بدم ساختم و ستون هاشم Bind کردم...
بعد هم که باقی ماجرا...
راستی یه سوال ؟؟؟؟؟؟

چطور می تونم خاصیت RightToLeft مقدار نمایش داده شده تو استیمول رو True کنم... ؟

pay_hossein
جمعه 20 دی 1392, 12:13 عصر
سلام دوست من
برنامتونو دانلود کردم ولی اجرا نمیشه

hamed_hossani
شنبه 24 اسفند 1392, 17:25 عصر
http://barnamenevis.org/showthread.php?445039-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%DA%A9%D9%88%D8%B1%DB%8C-query-%D8%AC%D8%AF%D9%88%D9%84-%D8%AF%D9%84%D8%AE%D9%88%D8%A7%D9%87-%D9%88-%D9%81%D8%B1%D8%B3%D8%AA%D8%A7%D9%86-%D8%A7%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AF%D8%B1-stimul-report&p=1990272#post1990272

اجرای کوری query دلخواه و فرستان ان برای نمایش در stimul report [stimulsoft]

Mohammadmasih
یک شنبه 27 مرداد 1398, 10:47 صبح
سلام و خدا قوت میشه لطف کنید و نحوه اتصال stimul رو به datatable بگید چطوری انجام میشه؟

Mohammadmasih
یک شنبه 27 مرداد 1398, 10:49 صبح
من میخوام چندتا ردیف تو گرید ویو رو به استیمول منتقل کنم نمیدونم چطوری میشه انجامش داد . البته من ی datatable ساختم و داخلش رو با دیف های گرید ویو پر کردم و بعد این datatable رو پاس دادم به استیمول اما هیچی نمایش نمیده. لطفا کمکم کنید

Mohammadmasih
یک شنبه 27 مرداد 1398, 10:53 صبح
Datasource رو تو استیمول چطوری تعیین کنم؟

Mohammadmasih
یک شنبه 27 مرداد 1398, 11:14 صبح
من داخل استیمول تو بخش datasource که وارد میشم میرم گزینه dataset , datatablevرو میزنم تا ی دیتاسورس ازشون بسازم روی آیکون دیتاسورسم علامت ضربدر میزنه .