2014-09-25 51 views
1

在旧的VB6程序中,我有一个与表单上的文本控件相关的数据控件。一些表字段是JET数据库中的日期时间字段。使用VB6重置DAO日期时间字段为空

对于日期时间字段没有默认值,所以当第一次显示在窗体上时,它们显示为空白。当它们最终被设置时,文本字符串被验证为日期并且数据控件适时地更新记录。

如果用户想要清除日期(例如,对先前数据输入的校正),他们只需将空白空白。保存没有发生错误,但受影响的日期时间字段未更新。当再次查看记录时,最后输入的日期是可见的。

通过检查文本控件的DataChanged属性,我可以看到日期值已更改为空白(= cNullString)。

因此,我假设记录的最终保存会忽略cNullString,因为它认为它对于日期时间字段无效。

当我的用户输入空白时,如何强制日期时间字段变成空白,以便下次查看时它会再次变为空白?

+0

尝试输入0.日期通常自日期起以单位存储。在Windows中,整数是天数,分数是从(1/1/1601 ??)开始的一天中的时间。 – Noodles 2014-09-25 19:13:59

+0

如果我这样做,我实际上会输入日期,当用户再次查看记录时,他们会看到第0天的日期。我希望他们看到空白。我也试图避免转换,例如检测第0天并将该字段留空,然后在保存之前恢复0。 – 2014-09-26 14:56:58

回答

1

务必通过IDE将TextBox.DataFormat设置为“日期”或特定的日期格式。然后底层的StdDataFormat对象应该有它的NullValue属性=“”,它就会生效。

由于文档说:

忽略当类型属性设置为fmtGeneral。每次获取空字段时,都会读取NullValue属性。

我不确定这可以在代码中完全设置。当IDE在设计时设置你的属性设置为(美国英语语言环境在这里):

BeginProperty DataFormat 
    Type   = 1 
    Format   = "M/d/yyyy" 
    HaveTrueFalseNull= 0 
    FirstDayOfWeek = 0 
    FirstWeekOfYear = 0 
    LCID   = 1033 
    SubFormatType = 3 
    EndProperty 

然而SubFormatType似乎是钥匙,这个属性似乎并没有被曝光的改变运行。

注意

测试对ADO数据控件,而不是老年人DAO版本。然而,这些绑定属性超越了ADO-DAO的差别,所以这应该是适用的。

+0

我从来没有使用DataFormat,但在研究此问题时进行了实验。当我尝试设置它时,VB会说:“DataFormat属性不支持这个DataSource,有问题的数据源是一个标准的VB数据控件,我认为我是一个版本(Access 97,而不是Access 2000),尽管如此,你的提示是非常好的信息,谢谢 – 2014-09-27 03:44:25

+0

好吧,它可能是一个DAO问题,或者是Jet 3.x的问题,我猜想,对不起,你不能使用它,它完全按照你的要求ADO数据控件和Jet 4.0数据库。 – Bob77 2014-09-27 15:57:24

相关问题