【问题标题】:Insert null value to date field in access using vba使用 vba 在访问中将空值插入日期字段
【发布时间】:2014-10-29 14:38:21
【问题描述】:

我试图在访问中使用 vba 将日期从一个表插入另一个表,但表中的一个日期值是空白的。因此,在将日期插入新表时,它会显示 无效使用空异常 运行时错误 94

【问题讨论】:

    标签: date ms-access vba


    【解决方案1】:

    如果编写 DAO 代码来清除 Date 字段,我发现我必须使用“Empty”。 Null 和 "" 不起作用。因此,对于字段 dtmDelivery(日期类型),我必须使用以下内容。 strDelivery 只是一个包含日期的字符串。

    Set rst = dbs.OpenRecordset("tblSomething", dbOpenDynaset)
    If (strDelivery = "") Then                      
        rst!dtmDelivery = Empty    
    Else 
        rst!dtmDelivery = strDelivery
    End If
    
    rst.Update
    

    【讨论】:

      【解决方案2】:

      您可以使用 NZ() 函数来定义一个应该用来代替 NULL 的值。在内部,日期是一个浮点值,其中数字表示 01.01.1900 和应存储的日期之间的天数。小数点后面的部分代表小时/分钟(例如 0.25 是早上 6 点)。因此,您可以使用 NZ() 函数来替换 NULL bei 0(将被解释为 01.01.1900)。

      另一种解决方案是以允许 NULL 值的方式配置目标表。您可以在表格的设计视图中轻松完成此操作。

      【讨论】:

      • 我已将必填字段状态设置为否。仍然不起作用。如果没有要插入的值,是否可以将字段留空?
      • 您必须在表格设计中更改字段的“必需”属性。
      • 感谢您的帮助。
      【解决方案3】:

      我想我明白了,将变量声明为字符串。然后检查表中的值是否为空,然后赋值为null。否则从表中赋值。

      例如

         Dim newdate As String
      

      检查获取的值是否为空

         If IsNull(rst![value]) Then
                  newdate = "null"
         Else
                 newdate = rst![value]
         End If     
      

      【讨论】:

        【解决方案4】:

        我遇到了这个问题,就这样解决了。

        SQL = "update mytable set mydatefield = '" & txtdate & "'"
        

        在表单上的txtdate 上,输入日期格式以确保日期是真实日期或只是空白。

        【讨论】:

          猜你喜欢
          • 2012-05-01
          • 2017-04-13
          • 2012-02-28
          • 2018-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多