Restrict() method and Null values

C

Craig Buchanan

I am trying to get a list of contacts (using the Restict() method) in a
Outlook 2003 Contact folder that do NOT have an Email1Address assigned.

These (Jet?) queries do NOT eliminate contacts without an Email1Address:

[Email1Address] <> ''
NOT([Email1Address] = '')
NOT([Email1Address] IS NULL) 'plus lower-case variations
"[Email1Address]<>" & Chr(34) & Chr(34)

Email1Address that are missing are considered Nothing in the Immediate
window, btw.

I'm using .Net framework 2.0. I am testing in Offline mode, if that makes a
difference.

Can someone shed some light on this for me?

Thanks,

Craig Buchanan
 
K

Ken Slovak - [MVP - Outlook]

You can use a DASL query for that using the undocumented "@SQL=" prefix.
Using that syntax your query for only items with an Email1Address would look
like this in VB.NET:

Dim sFilter As String = "@SQL=NOT(urn:schemas:contacts:email1 IS NULL)"
 
C

Craig Buchanan

Ken-

Thanks for the reply.

Why don't Jet queries support IS NULL or <>''?

Thanks,

Craig

Ken Slovak - said:
You can use a DASL query for that using the undocumented "@SQL=" prefix.
Using that syntax your query for only items with an Email1Address would look
like this in VB.NET:

Dim sFilter As String = "@SQL=NOT(urn:schemas:contacts:email1 IS NULL)"




Craig Buchanan said:
I am trying to get a list of contacts (using the Restict() method) in a
Outlook 2003 Contact folder that do NOT have an Email1Address assigned.

These (Jet?) queries do NOT eliminate contacts without an Email1Address:

[Email1Address] <> ''
NOT([Email1Address] = '')
NOT([Email1Address] IS NULL) 'plus lower-case variations
"[Email1Address]<>" & Chr(34) & Chr(34)

Email1Address that are missing are considered Nothing in the Immediate
window, btw.

I'm using .Net framework 2.0. I am testing in Offline mode, if that makes
a difference.

Can someone shed some light on this for me?

Thanks,

Craig Buchanan
 
K

Ken Slovak - [MVP - Outlook]

Why's the sky blue? <g>

Jet queries do support that sort of thing and in VBA code I'd use something
like this:

"[Email1Address] <>" & Chr(34) & Chr(34)

However in .NET code I've found many cases where a property is not there
even if in VBA code it would be null string. It might be null string or null
(Nothing) in .NET code. So for me it's a lot easier to avoid that possible
problem and to just use DASL syntax for the search. Personal preference plus
some experience.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top