ADO adDate字段返回“12:00 am”,当它的值为Null时

时间:2012-03-02 16:23:39

标签: vb6 ado recordset activereports multivalue-database

我们正在开发一个使用ActiveReports 2(VB for VB6)生成报告的项目,数据来自我们手动创建的ADO Recordset(我们使用的是不返回Recordset的MultiValue数据库)。

如果我将数据字段设置为日期,并且我将Recordset类型设置为adDate并且具有null或空值,则在ActiveReports中返回“12:00 am”。如果该字段包含数据,则会正确显示。我甚至将记录集导出为ex​​cel,并且它正常工作。

有没有人见过ActiveReport之前有这个问题?

2 个答案:

答案 0 :(得分:1)

没有AR2的经验,但我对同一家公司的sharpgrid控件有丰富的经验。

我会尝试将值设置为EMPTY oCtrl.value = Empty或空字符串oCtrl.value = ""oCtrl.value = Null。您可能需要在加载记录集中的数据后设置这些值。

答案 1 :(得分:0)

我不确定ADO记录集如何处理adDate类型和“null或空白”或空或什么(请记住这些值中的每一个都是不同的,并且在ADO本身也可能有不同的处理方式)。如果您使用null(或vbNull?),则需要告诉记录集该字段是否可为空。我在ADO here找到了关于null和日期的部分帖子。

但是,无论在ActiveReports方面,您都可以控制这些值的显示方式,只要您可以在记录集中检测到它们。使用包含日期的控件的Format event for the section更改文本框的输出。

具体来说,检查Textbox/Field control's DataValue property,如果它是您的“null或空白”值(无论您在记录集中放置什么值),请将Field controls' Text property设置为空字符串。下面大概是我希望你的格式事件代码看起来像:

Private Sub Detail_Format()
   ' If date value is null or blank value Then make sure the date textbox displays as empty in the report output:
   If txtDate.DataValue is Nothing Then
      txtDate.Text = ""
   End If
End Sub
相关问题