2015-10-17 5 views
0

Это заявление должно получить список писем для друзей для добровольцев. Мне нужно предложение WHERE, чтобы вернуться из списка флажков только тех добровольцев, у которых есть электронное письмо. Следующий код работает только тогда, когда установлен флажок IsVolunteer и отмечен флажок «Имеет электронную почту». Что не так с оператором SQL?MS Access SQL Query statement

Таким образом, результат должен быть таким, как ... Bill Turner ... [email protected] ... и покажите те проверенные предметы добровольца, которые требуются в форме. В этом плане должны быть только те, у кого есть электронные письма.

If Abs(Me.hasEmailCkb.Value) = 1 And Abs(Me.CheckIsVol.Value) = 1 Then 
VolToEMail = "Select * from [Members] where ([Food] = true Or [Setup] = true Or [Carpool] = true Or [Mail] = true AND [Email] <> NULL) Order By [LName] ASC" 
Me.Members_subform.Form.RecordSource = VolToEMail 

Благодарим за помощь!

ответ

1

Вам нужно СКОБКАХ перед темAND:

Select * 
from [Members] 
where ([Food] = true Or [Setup] = true Or [Carpool] = true Or [Mail] = true) AND 
     ([Email] IS NOT NULL) 
Order By [LName] ASC; 

Обратите внимание, что <> NULL должен быть IS NOT NULL. <> NULL всегда будет возвращать NULL, который считается ложным.

0
AND [Email] <> NULL 

Это не работает. Вы должны использовать:

AND [Email] IS NOT NULL 
+0

Все еще не работает. Это дает мне нули. Возможно, это связано с тем, что элементы or и и выстраиваются последовательно. – safron6