![](/img/trans.png)
[英]Crystal report in visual basic using mysql database can't login to load report
[英]Report with Crystal Reports, visual basic 2010 and mysql
我正在尝试在Crystal Reports中创建一个报表,但是当我将参数分配给报表时,它不会显示来自选择查询的结果。 尽管选择查询的结果正确,但它显示了表的所有列。 这是我的代码:
Dim ulogueado, consulta As String
consulta = "select nombre from usuario where usuario = @user"
Dim lector1 As MySqlDataReader
Dim comando As New MySqlCommand(consulta, conector)
comando.Parameters.AddWithValue("@user", usuario_conectado)
Try
lector1 = comando.ExecuteReader()
If lector1.Read Then
ulogueado = lector1.GetString(0)
End If
Dim reporte1 As New CrystalReport3
reporte1.SetDataSource(lector1.GetString(0))
reportes1.CrystalReportViewer1.ReportSource = reporte1
reportes1.CrystalReportViewer1.RefreshReport()
Catch ex As Exception
End Try
reportes1.Show()
我几乎可以确定问题可能出在SetDataSource行中,但是我不知道还能做什么。 感谢您在此问题上的关注与合作。
如文档所述 ,您需要将RecordSet或DataSet传递给ReportEngine,同时传递DataReader的字段,该字段返回String
reporte1.SetDataSource(lector1.GetString(0))
更改语句以使用DataReader应该可以解决以下问题
reporte1.SetDataSource(lector1)
我没有使用MySqlDataReader作为数据源,但是已经使用DataSet生成了运行良好的报告。
您需要检查的另一件事是保存的数据,如我上面的评论中所述。 如果您在报表中使用参数,那么还有其他方法可以将值传递给这些参数,请参见如何将值传递给两个不同的参数
编辑:使用数据集
Dim ulogueado, consulta As String
consulta = "select nombre from usuario where usuario = @user"
Dim comando As New MySqlCommand(consulta, conector)
comando.Parameters.AddWithValue("@user", usuario_conectado)
Dim da As MySqlDataAdapter = New MySqlDataAdapter()
Dim ds As DataSet = New DataSet()
da.SelectCommand = comando
Try
da.Fill(ds, "usuario")
Dim reporte1 As New CrystalReport3
reporte1.SetDataSource(ds)
reportes1.CrystalReportViewer1.ReportSource = reporte1
reportes1.CrystalReportViewer1.RefreshReport()
Catch ex As Exception
'Check for errors here
'MsgBox(ex.Message)
End Try
reportes1.Show()
有关DataAdapters,DataSet的更多详细信息,您可以阅读以下SO帖子: 连接到mysql-db-with-c-sharp-need-some-with-datasets
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.