ฉันมีแอปพลิเคชัน .net 3.5 SP1 ที่มีรายงานคริสตัลแบบฝังอยู่จำนวนหนึ่ง (เวอร์ชัน 10.5) รายงานจะทำงานได้ดีใน dev ของฉัน สภาพแวดล้อม แต่เมื่อฉันย้ายรหัสไปที่การใช้งานจริง ผู้ใช้จะได้รับหน้าต่างที่ขอข้อมูลรับรองการเข้าสู่ระบบ
ตอนนี้ฉันรู้แล้วว่าคำถามเกี่ยวกับวิธีการเปลี่ยนแหล่งข้อมูล ณ รันไทม์ได้ถูกถามและตอบหลายครั้งใน SO คำถามของฉันไม่ใช่จะทำอย่างไร แต่ฉันกำลังทำอะไรผิดหรือเปล่า?
สิ่งที่เกิดขึ้นคือหน้าต่างเข้าสู่ระบบจะปรากฏขึ้นพร้อมกับข้อมูลทั้งหมด แต่ฟิลด์ฐานข้อมูลว่างเปล่าและการแก้ไขจะถูกปิดใช้งานในฟิลด์ เมื่อฉันอ่านโค้ดด้วยดีบักเกอร์ ConnectionInfo จะมีข้อมูลที่ถูกต้องทั้งหมด รวมถึงชื่อฐานข้อมูลด้วย
//InvoiceHistory is the crystral report that is an embedded resource
InvoiceHistory billingHistoryReport = new InvoiceHistory();
ConnectionInfo info = ReportUtilities.GetConnectionInfo();
ReportUtilities.ConfigureLogonInfo(billingHistoryReport,info);
crystalReportViewer1.DisplayToolbar = true;
crystalReportViewer1.ReportSource = billingHistoryReport;
crystalReportViewer1.Refresh();
//Static Function Code
public static void ConfigureLogonInfo(ReportDocument _report, ConnectionInfo _conn)
{
Tables ts = _report.Database.Tables;
TableLogOnInfo li = new TableLogOnInfo();
foreach (Table t in ts)
{
li = t.LogOnInfo;
li.ConnectionInfo = _conn;
t.ApplyLogOnInfo(li);
}
for (int i = 0; i < _report.Subreports.Count; i++)
{
Tables tbs = _report.Subreports[i].Database.Tables;
TableLogOnInfo sli = new TableLogOnInfo();
foreach (Table t in tbs)
{
sli = t.LogOnInfo;
sli.ConnectionInfo = _conn;
t.ApplyLogOnInfo(li);
}
}
}
public static ConnectionInfo GetConnectionInfo()
{
ConnectionInfo conn = new ConnectionInfo();
conn.Type = ConnectionInfoType.SQL;
conn.UserID = GlobalSettings.Default.DatabaseUser;
conn.ServerName = GlobalSettings.Default.ServerName;
conn.Password = GlobalSettings.Default.DatabasePassword;
conn.IntegratedSecurity = GlobalSettings.Default.UseIntegratedSecurity;
conn.DatabaseName = GlobalSettings.Default.DatabaseName;
return conn;
}
เมื่อฉันผ่าน VS 2008 และไปที่ Crystal Reports -> Database -> Database Expert -> Properties
Database Type: OLE DB(ADO)
Provider : SQLNCLI10
Data Source: {My dev SQL SERVER SERVER Instance}
Initial Catalog: {My dev DB NAME}
User ID: {My dev User ID}
Integrated Security: false
แก้ไข: หลังจากยกเลิกการเลือก "ตรวจสอบทุกการพิมพ์" ปัญหายังคงเกิดขึ้น