我将VB.NET 2008 Professional与Crystal Reports Professional XI和MSSQL Server 2008 Express一起使用。
我已经尝试使用/或SQLDataReader和/或DataSet构建数据库并将其与 Report Viewer 一起使用,但它无法正常工作。出现以下问题:
1-它不考虑我在SQL 命令中放置的过滤器。寄存器总是全部显示。在 SQLCommand 我创建以下过滤器:
AND SEG_Usuario.CD_Empresa = 'MTO'
AND SEG_Sub_Processo.Nivel_1 <> 0
AND SEG_Usuario_Filial.CD_Filial = '010'
AND SEG_Usuario.CD_Ususario = '9635'
2- 显示的寄存器是重复的、无序的和混合的。
如果我执行我在数据库内的 SQLCommand 中使用的 SQL,数据库寄存器会正确显示,它们不会重复,它们是有序的,并且仅根据过滤器的要求显示。如果我显示 DataTable 和 DataReader 中的数据,它们也是正确的,不要重复,按照过滤器中设置的内容进行排序和显示。所以我相信 SQLCommand 是正确编写的 SQL 指令。
基本上我做了以下操作:
Dim conexao As SqlConnection = New SqlConnection("data source=meuservidor;initial catalog=meubanco;user id='meuuser';password='minhasenha'")
Dim comando As SqlCommand = New SqlCommand
Dim objdata As New DataTable
Dim objdr As SqlDataReader
comando.CommandText = "SELECT .... FROM .... WHERE ..... AND... AND ...ORDER BY ....."
comando.Connection = conexao
conexao.Open()
objdr = comando.ExecuteReader
objdata.Load(objdr)
Dim myReport As New ReportDocument()
'I have already tried to load the report this way
'myReport.Load("\path\myReport.rpt")
'Actually I load the report this way - I don't know if it makes any difference
myreport.FileName = "\path\myReport.rpt"
myreport.SetDatabaseLogon("meuser", ",minhasenha", "meuservidor", "meubanco")
myReport.SetDataSource(objdata)
CrystalReportViewer1.ReportSource = myReport
我找不到错误。有没有其他方法可以将 SQL 命令传递给报告?非常感谢您的回答。