将VB.net值传递给MYSQL过程和Crystal Report

时间:2015-06-15 03:59:43

标签: mysql vb.net crystal-reports

请帮助解决2个问题:

1)如何使用vb.net将参数值传递给查询中使用的mysql过程?

2)同时将这些参数值传递给晶体报告文件,因为程序也填充了晶体报告数据

好的,这就是我所做的,我将需要的vb值发送到crystal report参数。现在,我正在尝试做的是将这个晶体参数发送到我的mysql程序

以下是我的 vb.net代码,用于打印水晶报表并将值从文本框发送到水晶报表参数

    Dim cryRpt As New ReportDocument

    cryRpt.Load(Application.StartupPath & "\Reports\Report1.rpt")

    Dim crParameterFieldDefinitions As ParameterFieldDefinitions
    Dim crParameterFieldDefinition As ParameterFieldDefinition
    Dim crParameterValues As New ParameterValues
    Dim crParameterDiscreteValue As New ParameterDiscreteValue

    crParameterDiscreteValue.Value = TextBox1.Text
    crParameterFieldDefinitions = _
    cryRpt.DataDefinition.ParameterFields
    crParameterFieldDefinition = _
    crParameterFieldDefinitions.Item("controlid")
    crParameterValues = crParameterFieldDefinition.CurrentValues

    crParameterValues.Clear()
    crParameterValues.Add(crParameterDiscreteValue)
    crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)

    With rptReport
        .crReport1.ReportSource = cryRpt
        .crReport1.Refresh()
    End With

    rptReport.Show()

这是我在mysql数据库上的新存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `sreadings`(IN `controlid` INT)
BEGIN

    SELECT
        a.controlid,
        a.data1,
        a.data2,
        a.date1,
        a.date2

    FROM shifts AS a
    WHERE a.controlid = @controlid;
END

但是加载报告会给我带来错误:

Failed to retrieve data from the database.
Details: [Database Vendor Code: 1318].

从存储过程中删除 IN controlid INT 以及 WHERE a.day_id = @controlid 会删除错误,但我需要过滤我的数据由用户通过vb接口提供的 controlid

请输入任何内容?感谢

0 个答案:

没有答案