【问题标题】:Crystal reports Command for date Range in Visual Studio 2012Visual Studio 2012 中日期范围的 Crystal 报表命令
【发布时间】:2017-03-28 14:56:48
【问题描述】:

我正在编辑一个在 Visual Studio 2012 中制作的应用程序。我正在尝试创建一个 Crystal 报表,用户可以在其中选择一个日期范围。我为我的简单 SQL Server 查询添加了一个命令,该命令在 SQL Management Studio 中运行良好。

Select customerID, orderID, orderDate
From tblOrders
Where orderDate BETWEEN CONVERT(DATETIME, '01/01/2015 00:00:00', 102) 
                    AND CONVERT(DATETIME, '01/01/2016 11:59:59', 102)

然后我创建参数 From 和 To 作为日期并替换我的日期:

Select customerID, orderID, orderDate
From tblOrders
Where orderDate BETWEEN CONVERT(DATETIME, '{?From} 00:00:00', 102) 
                        AND     
                        CONVERT(DATETIME, '{?To} 11:59:59', 102)

我使用相同的日期收到以下错误:

Failed to retrieve data from the database.
Details: ADO Error Code 0x80040e14
Source Microsoft OLE DB Provider for SQL Server Description: Incorrect syntax near '2015'.
SQL State: 42000
Native Error: 102 [Database Vendor Code 102]

我尝试了不使用 Convert 函数的查询,但得到了相同的结果。

【问题讨论】:

    标签: .net sql-server vb.net visual-studio crystal-reports


    【解决方案1】:

    这不是一个正确的代码:

    '{?From} 00:00:00'
    

    可以是:

    {?From}  & " " & '00:00:00' in formula
    

    我想知道你为什么要这样做 Parameter 和静态 time

    这是经过测试运行的转换。

    CONVERT(DATETIME,convert(datetime, CONVERT(varchar,dt,101) + ' 00:00:00',102), 102) 
    

    您可以在水晶报告中将dt 更改为{?From}

    【讨论】:

    • 记住日期格式非常区分大小写。我的意思是检查您的日期是否具有从 DB 到 Parameter 的相同格式。
    • 这是在 Visual Studio 项目的 Crystal Reports“修改命令”窗口中。无论如何都试过了,但得到了同样的错误,但是“描述无效的列名''。SQL状态:42S22。本机错误:207 [数据库供应商代码207]”
    • 我使用了一个静态时间,所以它可以让我只选择日期并在 00:00:00 之后的日期内恢复所有内容。我注意到 Crystal Reports 的日期选择器会自动选择当前时间。
    • 列名不是来自您的公式,我猜它只是在您的表本身中.. 尝试检查它
    • 我决定只编译代码和调试,它实际上工作正常。
    猜你喜欢
    • 1970-01-01
    • 2013-12-23
    • 2013-01-25
    • 1970-01-01
    • 2012-08-25
    • 2019-04-10
    • 1970-01-01
    • 2014-05-24
    • 2014-02-02
    相关资源
    最近更新 更多