我是 vb.net 和水晶报表的新手。我尝试将水晶报表与访问数据库表连接起来。我编写了一个 sql quary 来过滤数据,这些数据成功显示在 datagridview 上。我也想在水晶报告中显示这些数据。但它很好地显示了 datagridview,但在水晶报表加载视图中显示错误。它显示为“加载报告失败”。 有人可以帮忙解决这个问题吗?以下是我的代码。
< ComboBox1.Text = "2023" And ComboBox2.Text = "2"
Try
Dim sql As String
Dim cmd As New OleDb.OleDbCommand
Dim dt As New DataTable
Dim da As New OleDb.OleDbDataAdapter
Dim cryRpt8 As New ReportDocument
Dim CrTables As Tables
Dim crtableLogoninfo As New TableLogOnInfo
Dim crConnectionInfo As New ConnectionInfo
con.Open()
sql = "select r.Department, r.officerName, b.book_ID, b.Requisition_Date, b.title, b.Authors, b.edition, b.Quantity, b.pdf_availability, b.Book_type, q.bidder1, q.bidder2, q.bidder3, q.up1currancy, q.up2currancy, q.up3currancy, q.unitprice_b1, q.unitprice_b2, q.unitprice_b3, q.ac1currancy, q.ac2currancy, q.ac3currancy, q.ac1, q.ac2, q.ac3, q.fa1currancy, q.fa2currancy, q.fa3currancy, q.fa1, q.fa2, q.fa3, q.committee_No FROM ((reqesition r INNER JOIN books b ON b.reqesitionID=r.reqesitionID) INNER JOIN quotation q ON q.BookID=b.book_ID)where q.committee_No LIKE '%" & 2 & "%' and b.Requisition_Date LIKE '%" & 2023 & "%' "
cmd.Connection = con
cmd.CommandText = sql
poppp = cmd.ExecuteNonQuery
da.SelectCommand = cmd
da.Fill(dt)
DataGridView1.DataSource = dt
cryRpt8.Load(My.Application.Info.DirectoryPath.ToString() & "E:\SLIIT\Final Book purchasing System\Final Book purchasing System\CrystalReport74.rpt")
With ConnectionInfo
.DatabaseName = My.Application.Info.DirectoryPath.ToString() & "E:\SLIIT\Database1.accdb"
.UserID = "Admin"
.Password = " "
End With
CrTables = cryRpt8.Database.Tables
For Each CrTable In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next
cryRpt8.SetDataSource(dt)
CrystalReportViewer1.ReportSource = cryRpt8
CrystalReportViewer1.Refresh()
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
将VB.Net连接到MS Access数据库并在Datagridview中显示记录
Dim sql As String = "SELECT field1, field2, field3 FROM TableName"
Dim con As OleDb.OleDbConnection
Dim constring As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Users\User\Documents\Student.mdb;
persist Security Info=false;Jet OLEDB:Database Password=yourdatabasepassword"
Dim cmd As New OleDb.OleDbCommand
Dim dt As New DataTable
Dim da As New OleDb.OleDbDataAdapter
con = New OleDb.OleDbConnection(constring)
con.Open()
cmd.Connection = con
cmd = New OleDb.OleDbCommand(sql, con)
da.SelectCommand = cmd
da.Fill(dt)
dtRecords.DataSource = dt
con.Close()
生成水晶报告
Dim CR As New ReportDocument
Dim CRTLI As New CrystalDecisions.Shared.TableLogOnInfo
CrystalReportViewer1.ReportSource = Nothing
CR.Load("C:\Users\User\Documents\StudentListReport.rpt")
For Each CRTable In CR.Database.Tables
CRTLI = CRTable.LogOnInfo
With CRTLI.ConnectionInfo
.ServerName = "C:\Users\User\Documents\Student.mdb"
.UserID = "yourdatabaseusername"
.Password = "yourdatabasepassword"
End With
CRTable.ApplyLogOnInfo(CRTLI)
Next
CrystalReportViewer1.ReportSource = CR
我希望这对你有帮助。 如需完整教程,您可以访问此链接: https://youtu.be/un4zamVbn6U
这是有关如何将 VB.Net 连接到 MS Access 并使用 Crystal Report 在 datagridview 中显示记录的完整分步教程。