Database logon failed /ฝัง username password บน Crystal Report ASP.NET


 วิธีการนี้จะแก้ปัญหาสองอย่างคือ
  1. การฝัง username/password เพื่อที่จะเปิด report โดยไม่ต้องใส่ username/password อีก
  2. ตามขั้นตอนที่ 1 หากใช้  SetDatabaseLogon จะเกิด Error จึงต้องใช้วิธีอื่น

    Error จะเกิดขึ้นตอนที่เปิด report จาก web ซึ่งการทำงานของ report ที่สร้างคือจะไปดึงข้อมูลจาก database โดยตรงผ่านทาง odbc ซึ่งทำให้ต้องใส่ username/password ของ odbc นั้นๆเพื่อใช้งาน หลังจากใส่แล้วปรากกว่าขึ้น Error Database logon failed ทั้งๆที่ใส่ถูกต้อง จึงเกิดความคิดว่า น่าจะฝัง username/password เข้าไปที่ code เลยโดยใช้คำสั่ง

rpt.SetDatabaseLogon("report", "report", "LIS_DB_ODBC", "LIS"); //(username,password,servername or odbc,database)

    พบว่าสามารถทำงานได้โดยไม่ต้องใส่ username/password ตอนเปิด report แต่พอนำ web ไป deploy (ทั้งแบบ copy all files และแบบที่ใช้แต่ Dll) ปรากฏว่ายังขึ้นหน้าจอให้ใส่ username/password เหมือนเดิม และเมื่อใส่ไปก็ Database logon failed.
เลยไปหาวิธีการมาจากหลายๆที่ ก็ google นั่นแหละ (ไม่ได้ post ref ไว้เพราะลองผิดลองถูกมาครึ่งวันจำไม่ได้แล้วว่าเปิดอันไหนบ้าง) โดยใช้คำ ConnectionInfo แทนการใช้ SetDatabaseLogon

protected void Page_Init(object sender, EventArgs e)
{
CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
rpt.Load(Server.MapPath("FinalReport.rpt"));
ConnectionInfo crConnectionInfo = new ConnectionInfo();
crConnectionInfo.ServerName = "LIS_DB_ODBC"; //Database server or ODBC
crConnectionInfo.DatabaseName = "LIS"; // Database name
crConnectionInfo.UserID = "report"; // username
crConnectionInfo.Password = "report"; // password

TableLogOnInfos crTableLogonInfos = new TableLogOnInfos();
TableLogOnInfo crTableLogonInfo = new TableLogOnInfo();
foreach (CrystalDecisions.CrystalReports.Engine.Table table in rpt.Database.Tables)
{
crTableLogonInfo.TableName = table.Name;
crTableLogonInfo.ConnectionInfo = crConnectionInfo;
crTableLogonInfos.Add(crTableLogonInfo);
table.ApplyLogOnInfo(crTableLogonInfo);
}
CrystalReportViewer1.LogOnInfo = crTableLogonInfos;
rpt.SetParameterValue("LAB_ID_SQL", 7);
CrystalReportViewer1.ReportSource = rpt;
}

    ก็เป็นอันว่าสามารถเปิด report ได้โดยไม่ต้อง username/password และไม่มี Error Database logon failed และยังไม่รู้ว่าสาเหตุเกิดจากอะไร (พอดีว่ามันใช้เวลานานจึงหาวิธีแก้อย่างเดียว สาเหตุเดี๋ยวว่ากันที่หลัง)

ติดป้ายกำกับ:, ,

3 thoughts on “Database logon failed /ฝัง username password บน Crystal Report ASP.NET

  1. นิรนาม กุมภาพันธ์ 10, 2014 ที่ 20:32 Reply

    ขอบคุณมากค่ะ

  2. นิรนาม มีนาคม 9, 2014 ที่ 14:30 Reply

    ขอ vb บางครับ

    • langisser มีนาคม 10, 2014 ที่ 10:29 Reply

      พอดีไม่ได้เขียน vb น่ะครับ แต่หลักการน่าจะเหมือนกันนะครับ คือเอาไว้ที่ configuration file ของโปรแกรมครับ

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: