Я создал макрос/некоторые VBA для ОБНОВЛЕНИЯ таблицы SQL Server, которая отлично работает.Для каждого оператора If - Skip NULL
Вкратце, код вытягивает определенное количество записей из таблицы, чтобы преуспеть, а затем конечный пользователь обновляет некоторую конкретную информацию и затем нажимает на обновление. В таблице создается соединение, и выполняется инструкция SQL update, которая обновляет соответствующие записи.
Проблема заключается в том, что пользователю не нужно было обновлять поле NULL (NULL находится в таблице SQL Server, но отображается как «пустое» в Excel), когда использование щелчков обновляет инструкцию SQL, заставляет NULL «пустая» запись.
Чтобы обойти это, я хотел бы, чтобы мой код в инструкции For Each проверял, является ли ячейка/запись NULL или пустым, и чтобы перейти к строке NEXT, чтобы команда SQL Execute не выполнялась.
Вот VBA в вопросе:
cnn.Open cnnstr
Dim row As Range
For Each row In [tbl_data].Rows
uSQL = "UPDATE BREACH_DATA SET [VAL_BREACH_REASON] = '" & (row.Columns(row.ListObject.ListColumns("VAL_BREACH_REASON").Index).Value) _
& "' ,[VAL_BREACH_DETAIL] = '" & (row.Columns(row.ListObject.ListColumns("VAL_BREACH_DETAIL").Index).Value) _
& "' ,[VAL_VALID] = '" & (row.Columns(row.ListObject.ListColumns("VAL_VALID").Index).Value) _
& "' ,[VAL_NOTES] = '" & (row.Columns(row.ListObject.ListColumns("VAL_NOTES").Index).Value) _
& "' WHERE [ATD_NUMBER] = '" & (row.Columns(row.ListObject.ListColumns("ATD_NUMBER").Index).Value) & "'"
'Debug.Print uSQL
cnn.Execute uSQL
Next
cnn.Close
Set cnn = Nothing
Любые предложения
С наилучшими пожеланиями Dino
Почему бы не просто обернуть каждый столбец с NULLIF? IIRC, Excel не может различать NULL и пустую строку. –
Спасибо @SeanLange, вот где я сбился с толку. Я дам вам благодарность. –
Могу ли я спросить, почему -1 для этого вопроса? –