【问题标题】:MS-Access Avoid Importing Null Fields from Form Field Word DocumentMS-Access 避免从表单域 Word 文档中导入空域
【发布时间】:2012-07-21 20:46:36
【问题描述】:

我正在尝试将我创建的表单域 word 文档中的域导入到 MS-Access 表中。导入工作正常,除非其中一个日期字段中有 null,然后它会引发类型不匹配错误。如何避免出现此错误?

Dim rst As New ADODB.Recordset
With rst
    .AddNew
    !BPRid = doc.FormFields("frmBPRid").Result
    If Not IsNull(doc.FormFields("frmReceiptDate").Result) Then
    !ReceiptDate = doc.FormFields("frmReceiptDate").Result
    End If    
    .Update
    .Close
End With

我尝试将它包装在如上所示的 if 语句中,但它似乎无法将该字段识别为 null。任何帮助,将不胜感激。提前致谢。

【问题讨论】:

    标签: ms-access vba import ms-word form-fields


    【解决方案1】:

    我怀疑它可能是一个零长度字符串 ("")。

    您可能喜欢使用 IsDate。

    If IsDate(doc.FormFields("frmReceiptDate").Result) Then
       !ReceiptDate = doc.FormFields("frmReceiptDate").Result
    End If   
    

    对于其他数据类型,您可以检查零长度字符串和空格填充字段,如下所示:

    If Trim(doc.FormFields("frmReceiptDate").Result & "") <> vbNullString
    

    【讨论】:

    • 这可能需要另外一个问题,但是有什么方法可以确定表单上是否存在字段?
    • 您当然可以检查表单字段。让我看看有没有更快的方法。
    • Access 2003 和 2007 之间的表单工作方式似乎发生了相当大的变化。您需要询问您正在使用的版本。
    • 检查表单字段是什么意思?我问的原因是,我有多个相关的表单字段文档,我想为所有这些文档重用同一个模块。
    • 这是版本的来源,例如,在 word 2010 中,您可以使用 For Each ctl In ActiveDocument.ContentControls 而对于 Word 2000,您可以使用 support.microsoft.com/kb/212405
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2018-10-14
    • 2019-10-29
    • 2018-02-14
    • 1970-01-01
    相关资源
    最近更新 更多