Vb6 ADO adDate字段返回“;“上午12:00”;当它';s值为空

Vb6 ADO adDate字段返回“;“上午12:00”;当它';s值为空,vb6,ado,recordset,activereports,multivalue-database,Vb6,Ado,Recordset,Activereports,Multivalue Database,我们正在进行一个使用ActiveReports 2(COM for VB6)生成报告的项目,数据来自我们手动创建的ADO记录集(我们使用的是不返回记录集的多值数据库) 如果我将数据字段设置为日期,并将记录集类型设置为adDate,并且具有null或空白值,则在ActiveReports中返回“12:00AM”。如果该字段有数据,则会正确显示。我甚至将记录集导出到excel,它工作正常 以前有人见过ActiveReport有这个问题吗 没有AR2方面的经验,但我对同一家公司的sharpgrid c

我们正在进行一个使用ActiveReports 2(COM for VB6)生成报告的项目,数据来自我们手动创建的ADO记录集(我们使用的是不返回记录集的多值数据库)

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


以前有人见过ActiveReport有这个问题吗

没有AR2方面的经验,但我对同一家公司的sharpgrid control有丰富的经验


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

我不确定ADO记录集如何处理adDate类型和“null或blank”或“empty”或nothing(请记住,这些值各不相同,ADO本身的处理方式也可能不同)。如果使用null(或vbNull?),则需要告诉记录集该字段可为空。我在ADO中发现了一篇关于null和日期的部分帖子

但是,不管怎样,在ActiveReports方面,只要能够在记录集中检测到这些值,就可以控制这些值的显示方式。使用包含日期的控件来更改文本框的输出

具体地说,检查,如果它是您的“null或blank”值(无论您在记录集中输入什么值),则将设置为空字符串。下面大概是我希望您的格式化事件代码的样子:

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

尝试对合成记录集使用
adDBTimeStamp
而不是
adDate