Dim rptTLog As New CrystalDecisions.Shared.TableLogOnInfo
rptTLog.ConnectionInfo.ServerName = SVName
rptTLog.ConnectionInfo.UserID = UID
rptTLog.ConnectionInfo.Password = PWD
rptTLog.ConnectionInfo.DatabaseName = DBName
For i As Short = 0 To Report.Database.Tables.Count() - 1
Report.Database.Tables(i).ApplyLogOnInfo(rptTLog)
Next
*** โดย Code ตัวนี้ ถ้าเป็น Database SQL Server ใช้ได้ปกติครับ
Tag : .NET, MySQL, Win (Windows App), VB.NET, VS 2008 (.NET 3.x), Windows
06. เลือก Field ที่ต้องการอีกรอบ หรือ เอาหมด ดังรูป
07. Add Form นำ CrystalReportViewer มายัดลง Form จะได้ ดังรูป
08. เนื่องจาก Form2 ผมเป็น Form แสดงรายงาน และ Form1 เป็น Form แสดงข้อมูลสินค้าผ่าน DataGridview และ มี Button เพื่อทำการออกรายงานมายัง Form2 (ส่วนคนที่ยังไม่มี Form1 ก็ให้สร้าง Form ใหม่ชื่ออะไรก็ได้ และ ยัด DataGridview และ Button อย่างละหนึ่ง)
09. Double Click ที่ Button เอา Code นี่ไปใส่
Code (VB.NET)
Dim dsEx As New DataSet1()
If dsEx.DataTableOrder.Rows.Count > 0 Then
dsEx.DataTableOrder.Rows.Clear()
End If
For i As Integer = 0 To DataGridView1.Rows.Count - 1
Dim dr As DataGridViewRow = Nothing
dr = DataGridView1.Rows(i)
dsEx.DataTableOrder.Rows.Add(dr.Cells(0).Value, dr.Cells(1).Value, dr.Cells(2).Value, dr.Cells(3).Value, dr.Cells(4).Value, dr.Cells(5).Value, dr.Cells(6).Value)
Next
'DataGridViewRow dr = default(DataGridViewRow);
'dsEx.DataTable1.Rows.Add("1","2","3","4");
Dim crv As New CrystalReportOrder()
crv.SetDataSource(dsEx)
'crv.SetParameterValue("date", String.Format("{0:d MMMM yyyy}", DateTime.Now));
Dim frm As New FormReport()
frm.CrystalReportViewer1.ReportSource = crv
frm.ShowDialog()
Private strSheetNo As String = String.Empty
Private rpt As ReportDocument
Protected Sub Page_Load(sender As Object, e As EventArgs)
rpt = New ReportDocument()
rpt.Load(Server.MapPath("../report/myReport.rpt"))
Dim crtableLogoninfo As New TableLogOnInfo()
Dim crConnectionInfo As New ConnectionInfo()
Dim CrTables As Tables
Dim db = UtilityClass.GetDatabaseConnection()
crConnectionInfo.ServerName = "localhost"
crConnectionInfo.DatabaseName = "mydatabase"
crConnectionInfo.UserID = "sa"
crConnectionInfo.Password = ""
CrTables = rpt.Database.Tables
For Each CrTable As CrystalDecisions.CrystalReports.Engine.Table In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next
rpt.RecordSelectionFormula = "{tbReport.CusNo} in [" + strCustomerNo + "] "
Me.rptCrystal.ReportSource = rpt
End Sub
Protected Overrides Sub OnUnload(e As EventArgs)
MyBase.OnUnload(e)
Try
If rpt IsNot Nothing Then
rpt.Close()
rpt.Dispose()
GC.Collect()
End If
Catch ex As Exception
MessageLogClass.WriteLog(ex)
End Try
End Sub
Protected Sub rptCrystal_Unload(sender As Object, e As EventArgs)
Try
If rpt IsNot Nothing Then
rpt.Close()
rpt.Dispose()
GC.Collect()
End If
Catch ex As Exception
MessageLogClass.WriteLog(ex)
End Try
End Sub