将access数据库与水晶报表连接

问题描述 投票:0回答:1

我是 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 crystal-reports
1个回答
0
投票
  1. 将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()
    
  2. 生成水晶报告

     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 中显示记录的完整分步教程。

© www.soinside.com 2019 - 2024. All rights reserved.