Vb.net 如何使用联接表创建RDLC报告?
我正在尝试创建一个报告,该报告将显示我的表,该表包含来自不同表的连接,看起来像这样Vb.net 如何使用联接表创建RDLC报告?,vb.net,reporting,rdlc,Vb.net,Reporting,Rdlc,我正在尝试创建一个报告,该报告将显示我的表,该表包含来自不同表的连接,看起来像这样 select * from tblproduct As p inner join tblbrand As b On p.bid = b.brandid inner Join tblclassification As c On p.cid = c.classid inner Join tblformulation As f On p.fid = f.formid inner Join tblgeneric As g
select * from tblproduct As p inner join tblbrand As b On p.bid = b.brandid inner Join tblclassification As c On p.cid = c.classid inner Join tblformulation As f On p.fid = f.formid inner Join tblgeneric As g On p.gid = g.genericid inner Join tbltype As t On p.tid = t.typeid
我的表由8列组成,其中4列是用于联接的列id。当我尝试显示到datagridview时,我可以成功地使用该查询,但当我在reportviewer中尝试此操作时,它不起作用,并给出错误:“对象引用未发送到对象实例”
。这就是我试过的
Public Class frmInventoryReport
Public Property strReport2 As String
Private Sub frmInventoryReport_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.tblproductTableAdapter.Fill(Me.groceryDataSet.tblproduct)
Me.ReportViewer1.RefreshReport()
Dim rptDataSource As New ReportDataSource
Try
With Me.ReportViewer1.LocalReport
.ReportPath = "D:\VisualBasic\EELPOS - Copy\EELPOS\Report3.rdlc"
.DataSources.Clear()
End With
Select Case strReport2
Case "Report3"
Dim i As Integer = 0
Dim sqlQuery As String = "select * from tblproduct As p inner join tblbrand As b On p.bid = b.brandid inner Join tblclassification As c On p.cid = c.classid inner Join tblformulation As f On p.fid = f.formid inner Join tblgeneric As g On p.gid = g.genericid inner Join tbltype As t On p.tid = t.typeid"
Dim da As New MySqlDataAdapter(sqlQuery, cn)
Dim dt As DataTable = New DataTable()
While dr.Read
dt.Rows.Add(i, dr.Item("barcode").ToString, dr.Item("generic").ToString, dr.Item("classification").ToString, dr.Item("type").ToString, dr.Item("formulation").ToString, dr.Item("price").ToString, dr.Item("qty").ToString)
End While
da.Fill(dt)
rptDataSource = New ReportDataSource("inventory", dt)
End Select
Me.ReportViewer1.LocalReport.DataSources.Add(rptDataSource)
Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Me.ReportViewer1.RefreshReport()
End Sub
End Class
正确的方法是什么?您应该做的一个更正是显式命名字段。避免在生产代码中选择*。另一件事是编辑您的帖子以识别引发异常的行。除了使用Select*(坏习惯)之外,您能提供更多详细信息吗?您需要检查输出窗口以了解更详细的错误。甚至不清楚这是一份报告给了你一个错误。