【问题标题】:Date value returning in a different format on the first of each month在每个月的第一天以不同的格式返回日期值
【发布时间】: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 事件以及DateTimePickerValue_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


【解决方案1】:

除了@Siva 所说的方法(总是一个好方法,这样你可以在那里创建公式并使用它正在寻找的语法),还有你正在尝试的方法,在VB.NET.

正如我刚才提到的,语法很重要,这就是导致您的问题的原因。 我之前没有看到有人尝试在这种方法中使用DateTimes,使用`#value#。

将日期格式化为RecordSelectionFormula 的正确方法是DATE(yyyy, MM, dd)

所以,正确的语法方法是使用:

selectionFormula = "{Sales_Headers.Stage} = '6' AND {Sales_Lines.PaymentDate} <= DATE(" & _
 dtpCRTo.Value.Date.Year & "," & dtpCRTo.Value.Date.Month & "," & dtpCRTo.Value.Date.Day & ")"

以后用这个方法把你的日期插入到选择公式中,这样你就不会弄错了。

如果这不起作用,那么您需要检查控制面板中的区域和本地日期/时间设置,以确保它们设置正确。

【讨论】:

  • 这解决了,也感谢您解释原因
猜你喜欢
  • 2011-09-29
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多