MS-Access Избегайте импорта пустых полей из документа Word поля формы

Я пытаюсь импортировать поля из документа Word поля формы, который я создал, в таблицу MS-Access. Импорт работает нормально, если в одном из полей даты нет нуля, а затем выдается ошибка несоответствия типа. Как мне не получить эту ошибку?

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, как показано выше, но, похоже, он не распознает поле как нулевое. Любая помощь будет оценена по достоинству. Заранее спасибо.


person talbright    schedule 23.07.2012    source источник


Ответы (1)


Я подозреваю, что это, вероятно, строка нулевой длины ("").

Возможно, вы захотите использовать IsDate.

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

Для других типов данных вы можете проверить строку нулевой длины и поля, заполненные пробелами, например:

If Trim(doc.FormFields("frmReceiptDate").Result & "") <> vbNullString
person Fionnuala    schedule 23.07.2012
comment
Возможно, это должен быть другой вопрос, но есть ли способ определить, существует ли поле в форме? - person talbright; 23.07.2012
comment
Конечно, вы можете проверить поля формы. Посмотрим, есть ли более быстрый способ. - person Fionnuala; 23.07.2012
comment
Похоже, что между Access 2003 и 2007 работа форм претерпела значительные изменения. Вам нужно будет спросить о версии, которую вы используете. - person Fionnuala; 23.07.2012
comment
Что вы подразумеваете под проверкой через поля формы? Причина, по которой я спрашиваю, заключается в том, что у меня есть несколько связанных документов полей формы, и я хотел бы повторно использовать один и тот же модуль для всех из них. - person talbright; 23.07.2012
comment
Именно здесь появляется версия, например, в Word 2010 вы можете использовать For Each ctl In ActiveDocument.ContentControls, тогда как для Word 2000 у вас есть support.microsoft.com/kb/212405 - person Fionnuala; 23.07.2012
comment
Спасибо. Я думаю, что ссылка, которую вы предоставили, содержит то, что я ищу - person talbright; 23.07.2012