繁体   English   中英

带有Crystal Reports,Visual Basic 2010和mysql的报表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM