PDA

View Full Version : مشکل در فراخوانی گزارش استیمول سافت بعد از بستن فرم



samiasoft
جمعه 04 خرداد 1397, 19:16 عصر
سلام دوستان

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

چگونه میتوانیم با زدن گزینه ذخیره در دیتابسس همان لحظه فرم بسته بشه و فایل گزارش لود بشه ؟!



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

بدین صورت :

private void btn_Add_Click(object sender, EventArgs e) {

//save to database


//print
StiReport report = new StiReport();
report.Load(Application.StartupPath + @"\report\Report_fish.mrt");
report.Dictionary.Variables["Var_PersonelID"].Value = txt_PersonelId.Text;
report.Dictionary.Variables["var_Date"].Value = Functions.ShamsiDate();
report.Compile();
report.Show();


//close form
this.Close();

}

من انتظارم از این دستور اینه که بعد ذخیره شدن در دیتابیس فایل گزارش استیمول سافت را نمایش بدهد سپس فرم مربوطه بسته شود.

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

samiasoft
جمعه 04 خرداد 1397, 21:37 عصر
ناگفته نماند فرم مربوطه رو بصورت showdialog اجرا کرده بودم.

تنهاراهی که پیداکردم اینه که بیام بصورت show اجرا کردم و بجای close از hide استفاده کنم:افسرده:

danialafshari
جمعه 04 خرداد 1397, 22:02 عصر
با سلام
استیمول من نسخه پرتابل هست و کامل نیست اگر میتونید به صورت ShowDialog باز کنید فکر میکنم کد زیر عمل کنه:

if (stiReport1.ShowDialog()==DialogResult.Cancel)
{
this.Close();
}

و یک کد دیگه هم نوشتم که متغیر ها رو لود نکرد یا شاید جاییش اشتباه کردم (استیمولم هم کامل نیست و مشکل داره چون به Event هاش دسترسی ندارم و قاطی میکنه) و زیادم وقت ندارم روش کار کنم

private void Print_Click(object sender, EventArgs e)
{
stiReport1.Load("مسیر فایل...");
Stimulsoft.Report.Render.StiPreviewForm stiPreviewForm = new Stimulsoft.Report.Render.StiPreviewForm(stiReport1 );
stiReport1.Render(true);
if (stiPreviewForm.ShowDialog()==DialogResult.Cancel)
{
this.Close();
}
}

از رویداد ها و Event هاش میتونید استفاده کنید مثلاً در کد بالا میشه از رویداد Closed هم به جای شرط if که قرار دادم استفاده کرد

private void Print_Click(object sender, EventArgs e)
{
stiReport1.Load(@"D:\Report.mrt");
Stimulsoft.Report.Render.StiPreviewForm stiPreviewForm = new Stimulsoft.Report.Render.StiPreviewForm(stiReport1 );
stiReport1.Render(true);
stiPreviewForm.FormClosed += stiPreviewForm_FormClosed;
stiPreviewForm.ShowDialog();
}


void stiPreviewForm_FormClosed(object sender, FormClosedEventArgs e)
{
this.Close();
}

فعلاً به دلیل مشکلات سیستمم در همین حد میتونم کمک کنم، ولی میتونم کاری کنم که بعد از پرینت گرفتن حتماً فرم بسته شود
موفق باشید

Mahmoud.Afrad
شنبه 05 خرداد 1397, 21:17 عصر
یک راه حل هم این هست که owner گزارش را برابر فرم اصلی قرار بدید.