目前我正在为我的项目制作报告。我在Crystal Reports中设计了一个报表,连接来自数据库而不是数据集,所以我把这个代码放在打印按钮中:
Dim index As Integer = Me.dgrdItems.CurrentRow.Index
Dim connectionString As String = "Data Source=(local)\sqlexpress;Initial Catalog=SAb;Integrated Security=True"
Dim selectConnection As New SqlConnection(connectionString)
selectConnection.Open()
'Dim adapter As New SqlDataAdapter(Conversions.ToString(Operators.ConcatenateObject(Operators.ConcatenateObject("SELECT * FROM Sales Where SalesNo='", Me.dgrdItems.Item(0, index).Value), "'")), selectConnection)
Dim dataSet As New DataSet
'adapter.Fill(dataSet, "Sales")
'Dim da As New SqlDataAdapter(Conversions.ToString(Operators.ConcatenateObject(Operators.ConcatenateObject("SELECT * FROM SalesItem where ItemSalesNo= '", Me.dgrdItems.Item(0, index).Value), "'")), selectConnection)
''MsgBox(Me.dgrdItems.Item(0, index).Value)
''da.Fill(dataSet, "SalesItem")
''MsgBox(Me.dgrdItems.Item(0, index).Value)
''Dim da2 As New SqlDataAdapter(("SELECT * FROM StoreInfo where StoreName= '" & lblCompanyName.Text & "'"), selectConnection)
''da2.Fill(dataSet, "StoreInfo")
Dim selected As New rptSalesInvoiceSelected
selected.SetDataSource(dataSet)
Dim frmReportsViewer As New reportviewer
frmReportsViewer.CrystalReportViewer1.ReportSource = selected
' AllObjects.frmReportsViewer.MdiParent = MainFormR
frmReportsViewer.Show()
frmReportsViewer.CrystalReportViewer1.PrintReport()
selectConnection.Close()
我做了上面的代码注释,数据从数据库加载并在报告中显示重复的行。我不知道为什么打印按钮中的代码无效。
任何答案都将不胜感激。
答案 0 :(得分:0)
由于当前代码永远不会填充dataSet变量,因此我必须假设注释代码通常会运行。如果是这样,那么这意味着您将3个表加载到报表中。这也意味着你在CR的数据库专家中做了“LINKS”。这意味着,如果其中任何一个表中有多个记录,则您将拥有其他记录的副本。这是标准的数据库连接行为。如果所有3个表之间没有链接,则可能导致相同类型的问题。 查看您的链接。