1

我将VB.NET 2008 ProfessionalCrystal Reports Professional XIMSSQL 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 命令传递给报告?非常感谢您的回答。

4

0 回答 0