السلام عليكم الاخوة والاخوات الكرام .بعد ان قمت بتثبيت البرنامج في جهاز العميل كل شي يعمل جيدا عدا التقارير تظهر هذا الخطا المرفق في الصورة
*مع العلم تني ثبت الكريستال ريبورت runtime![]()
مشكلة في البرنامج
السلام عليكم
المشكلة ياعزيزي في الاتصال حيث ان الكريستال ريبورت لايزال يحتفظ
باسم سيرفر الجهاز الذي تم تصميم الكريستال ريبورت به وبالتالي يظهر لك الخطأ السابق
لحل هذه المشكلة وجدت لك هذا الكود
Form1 myForm = new Form1 ();
CrystalReport1 myReport = new CrystalReport1();
ConnectionInfo connectionInfo = new ConnectionInfo();
//اسم السيرفر
connectionInfo.ServerName = @"MyCombuterName-PC\SQLEXPRESS";
//اسم قاعدة البيانات
connectionInfo.DatabaseName = "MyDB";
connectionInfo.IntegratedSecurity = true;
Tables reportTables = myReport.Database.Tables;
foreach (Table theTable in reportTables)
{
TableLogOnInfo theTableLogoninfo = theTable.LogOnInfo;
theTableLogoninfo.ConnectionInfo = connectionInfo;
theTable.ApplyLogOnInfo(theTableLogoninfo);
}
myForm.crystalReportViewer1.ReportSource = myReport;
myForm.ShowDialog();
}حقيقة حصلت معي نفس المشكلة وتم حلها بهذا الكود
للأمانه الكود منقول من هذا الموقع
http://www.experts-exchange.com/Database/Reporting/Crystal_Reports/Q_26612690.html
تم تعديل هذه المشاركة بواسطة Syayaf في 10 أكتوبر 2014 في 19:40
وقل ربي زدني علما
Syayaf كتب:السلام عليكم
المشكلة ياعزيزي في الاتصال حيث ان الكريستال ريبورت لايزال يحتفظ
باسم سيرفر الجهاز الذي تم تصميم الكريستال ريبورت به وبالتالي يظهر لك الخطأ السابق
لحل هذه المشكلة وجدت لك هذا الكود
Form1 myForm = new Form1 (); CrystalReport1 myReport = new CrystalReport1(); ConnectionInfo connectionInfo = new ConnectionInfo(); //اسم السيرفر connectionInfo.ServerName = @"MyCombuterName-PC\SQLEXPRESS"; //اسم قاعدة البيانات connectionInfo.DatabaseName = "MyDB"; connectionInfo.IntegratedSecurity = true; Tables reportTables = myReport.Database.Tables; foreach (Table theTable in reportTables) { TableLogOnInfo theTableLogoninfo = theTable.LogOnInfo; theTableLogoninfo.ConnectionInfo = connectionInfo; theTable.ApplyLogOnInfo(theTableLogoninfo); } myForm.crystalReportViewer1.ReportSource = myReport; myForm.ShowDialog(); }حقيقة حصلت معي نفس المشكلة وتم حلها بهذا الكود
للأمانه الكود منقول من هذا الموقع
http://www.experts-exchange.com/Database/Reporting/Crystal_Reports/Q_26612690.html
تسلم ي
Syayaf بجرب وارجع اكلمكهذه هو الكود في جهازي اظن انه بعد مثالك اعلاءه سيعمل معي عند العميل
private void button1_Click(object sender, EventArgs e)
{
RPT.rpt_all_customer myReport = new RPT.rpt_all_customer();
RPT.FRM_RPT_PRODUCT myForm = new RPT.FRM_RPT_PRODUCT();
myReport.Refresh();
myForm.crystalReportViewer1.ReportSource = myReport;
myForm.ShowDialog();
}ان شاء الله سيعمل معك
بس ملاحظة هنا عليك كتابة اسم السيرفر في جهاز العميل
مكان اسم السيرفر اعلاه
وفق الله الجميع
تم تعديل هذه المشاركة بواسطة Syayaf في 10 أكتوبر 2014 في 20:51
وقل ربي زدني علما
هذه هو الكود بعد التعديل عليه لكن يسطر علي
ConnectionInfo
باللون الاحمر
ConnectionInfo connectionInfo = new ConnectionInfo();
وهذا الكود كاملا
private void button1_Click(object sender, EventArgs e)
{
//RPT.rpt_all_customer myReport = new RPT.rpt_all_customer();
//RPT.FRM_RPT_PRODUCT myForm = new RPT.FRM_RPT_PRODUCT();
//myReport.Refresh();
//myForm.crystalReportViewer1.ReportSource = myReport;
//myForm.ShowDialog();
RPT.FRM_RPT_PRODUCT myForm = new RPT.FRM_RPT_PRODUCT();
RPT.rpt_all_customer myReport = new RPT.rpt_all_customer();
connectionInfo connectionInfo = new connectionInfo();
//اسم السيرفر
connectionInfo.ServerName = @"HATIM-PC\SQLEXPRESS";
//اسم قاعدة البيانات
connectionInfo.DatabaseName = "product_db";
connectionInfo.IntegratedSecurity = true;
Tables reportTables = myReport.Database.Tables;
foreach (Table theTable in reportTables)
{
TableLogOnInfo theTableLogoninfo = theTable.LogOnInfo;
theTableLogoninfo.ConnectionInfo = connectionInfo;
theTable.ApplyLogOnInfo(theTableLogoninfo);
}
myForm.crystalReportViewer1.ReportSource = myReport;
myForm.ShowDialog();
}اضف الاكواد التالية في بداية البرنامج واقصد هنا اعلى namespace
using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.CrystalReports; using CrystalDecisions.Shared; using CrystalDecisions.Data;
وقل ربي زدني علما
Syayaf كتب:ان شاء الله سيعمل معك
بس ملاحظة هنا عليك كتابة اسم السيرفر في جهاز العميل
مكان اسم السيرفر اعلاه
وفق الله الجميع
يديك العافيه اخي الغالي
هل بوضع نقطة دوت مكان اسم السيرفر. سيعمل عند العميل؟ هكذا
sqlconnection = new SqlConnection(@"Data Source=.\EXPRESS;Database=product_db;integrated security=true");
ahmedalsafi كتب:
يديك العافيه اخي الغالي
هل بوضع نقطة دوت مكان اسم السيرفر. سيعمل عند العميل؟ هكذا
sqlconnection = new SqlConnection(@"Data Source=.\EXPRESS;Database=product_db;integrated security=true");
بهذه الطريقة سيحدث خطأ الافضل كتابته بالطريقة السابقة
وقل ربي زدني علما
لقد قمت باضافة مجالات الاسماء اعلاءه لكن
اولا مازال يضع خط احمر تحت connectionInfo
وياشر علي
using CrystalDecisions.Data;
بالاحمر
ahmedalsafi كتب:لقد قمت باضافة مجالات الاسماء اعلاءه لكن
اولا مازال يضع خط احمر تحت connectionInfo
وياشر علي
using CrystalDecisions.Data;بالاحمر
يجب ان يكون الحرف الاول كبتل ConnectionInfo
ConnectionInfo connectionInfo = new ConnectionInfo();
وقل ربي زدني علما
جزاك الله خير اخي واستاذي
Syayaf الان صارت التقارير تفتح في الجهاز الاخر .جزاك الله خيرا اخيلكن مازلت استخدم اسم سيرفر العميل واثبته في نص الاتصال واعرف انه خطاء
بهذه الطريقة لن يعمل في كل الاجهزة
sqlconnection = new SqlConnection(@"Data Source=HATIM-PC\SQLEXPRESS;Database=product_db;integrated security=true");
سوف ابحث في الرابط الذي ارسلته لي http://www.codeproject.com/Tips/416198/How-to-get-Connection-String-from-App-Config-in-Cs
والله لساني عاجز عن شكرك استاذ
بارك الله فيك وجزاك خيرا