2016-03-10 5 views
0

У меня есть вспомогательные функции, которые должны сцепить Notes Имя, Notes Среднего Имени и Примечание Фамилия поля из таблицы доступа с именем IBM Notes.SQL вспомогательная функция не вызывается, если поле прошло пусто

Сам хелпер отлично работает, однако, если я попытаюсь вызвать его в строке с пустой записью для одного из вышеупомянутых полей, вспомогательный вызов не будет вызван.

Как я могу исправить SQL, который используется для вызова помощника, чтобы гарантировать, что он возвращает результат независимо от того, пусто или нет поле, используемое в качестве параметра?

Вот SQL используется для вызова помощника (DB установлен в CurrentDb) -

DB.Execute "UPDATE [IBM Notes] SET [Notes Full Name] = NotesFullName([Notes First Name], [Notes Middle Name], [Notes Surname])" 

А вот сам помощник -

Function NotesFullName(Optional ByVal firstName As String = "", _ 
         Optional ByVal middleName As String = "", _ 
         Optional ByVal surname As String = "") As String 

    NotesFullName = Trim(_ 
     IIf(Not firstName = "", firstName & " ", "") & _ 
     IIf(Not middleName = "", middleName & " ", "") & _ 
     IIf(Not surname = "", surname, "") _ 
    ) 

End Function 

ответ

1

Будет ли этот запрос выполнять то же самое без использования вспомогательной функции?

UPDATE [IBM Notes] 
SET [IBM Notes].[Notes Full Name] = 
    TRIM(Replace(Nz([Notes First Name],"") & " " & 
    Nz([Notes Middle Name],"") & " " & 
    Nz([Notes Surname],"")," "," ")) 

Примечание: Заменить функция замены двойного пространства с одним.

Редактировать: В этом примере NZ заменяет Нулевые поля пустой строкой.

+0

Спасибо, что сделают трюк. –

1

Это потому, что пустые поля Null , Попробуйте следующее:

Function NotesFullName(Optional ByVal firstName As Variant = Null, _ 
         Optional ByVal middleName As Variant = Null, _ 
         Optional ByVal surName As Variant = Null) As Variant 

    If IsNull(firstName & middleName & surName) Then 
     NotesFullName = Null 
    Else 
     NotesFullName = Trim(_ 
      IIf(Not IsNull(firstName), firstName & " ", "") & _ 
      IIf(Not IsNull(middleName), middleName & " ", "") & _ 
      IIf(Not IsNull(surName), surName, "") _ 
     ) 
    End If 

End Function