【发布时间】:2017-01-27 09:58:23
【问题描述】:
这个问题与this one 相关,但是我想我会创建一个新帖子,因为它不是完全相同的问题,并且只是重复了关于它的想法。
我的 Crystal Report 有一个选择公式。应该选择一个表中Stage字段为6,而另一个表中PaymentDate字段小于或等于DateTimePicker控件值的数据。
我下面的代码在大多数日期都可以正常工作。但是,例如我在数据库中有以下数据:
Sales_Headers.Stage = 6
Sales_Lines.PaymentDate = 28/01/2017 (January 28th, 2017)
选择 1 月 26 日至 1 月 31 日的日期时,仅当日期为 28 日或更高时才会检索数据。但是,如果我随后选择 2 月 1 日(或者准确地说是任何月份的 1 日)的日期,它将返回日期为 2017 年 2 月 1 日或 2017 年 1 月 2 日,因此不会显示数据。
为什么它只在每个月的 1 号发生变化?所有其他日期都被正确读取,如 dd/MM/yyyy,但首先,它使用 MM 部分作为 dd 部分。
我试过了:
Dim dateTo As Date = dtpCRTo.Value.AddDays(1).Date
dateTo = Format(dateTo, "dd/MM/yyyy")
If cmbCRSupplier.Value = "" Then
selectionFormula = "{Sales_Headers.Stage} = '6' AND {Sales_Lines.PaymentDate} < #" & dateTo & "#"
然后我在form_Load 事件以及DateTimePicker 的Value_Changed 事件中尝试了这个:
Dim dateFormat As String
dt.Format = DateTimePickerFormat.Custom
dt.CustomFormat = "dd/MM/yyyy"
dateFormat = dt.Text
我尝试的最后一件事是没有格式化代码,只是使用:
If cmbCRSupplier.Value = "" Then
selectionformula = "{Sales_Headers.Stage} = '6' AND {Sales_Lines.PaymentDate} <= #" & dtpCRTo.Value.Date & "#"
但对所有人来说,结果都是一样的。
【问题讨论】:
-
可以写任何水晶函数还是只写vb函数?
-
@Siva 我只能用VB写
-
ok.. 很抱歉我帮不了你...
-
@Siva 如果我在 Crystal 中编写选择公式,我将如何传递日期所需的值?
-
您需要创建一个日期参数,然后在运行报表时用户将提供所需的值,该值将传递给选择公式
标签: vb.net date ms-access crystal-reports datetimepicker