A Microsoft Office (Excel, Word) forum. OfficeFrustration

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » OfficeFrustration forum » Microsoft Access » General Discussion
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

StrWhere error runtime 2448



 
 
Thread Tools Display Modes
  #1  
Old October 24th, 2008, 06:11 PM posted to microsoft.public.access
Renee
external usenet poster
 
Posts: 342
Default StrWhere error runtime 2448

I am trying to have a specific form to be used as a quick search but i am
having a difficult time & I just give up. Anyone pls help me get this form
going. Thx.

My Formula is as followed on the event:
Private Sub Ctl_Search_Click()
Const cInvalidDateError As String = "You have entered an invalid date."
Dim strWhere As String
Dim strError As String

strWhere = "1=1"

' If Primary Code
If Nz(Me.Primary_Code) "" Then
'Add it to the predicate - exact match
strWhere = strWhere & " AND " & "HPG Members Overview.Primary Code =
" & Me.Primary_Code & ""
End If


' If Facility
If Nz(Me.Facility) "" Then
'Add it to the predicate - match on leading characters
strWhere = strWhere & " AND " & "HPG Members Overview.Facility Like
" * " & Me.Facility & " * ""
End If


' If City
If Nz(Me.City) "" Then
'Add it to the predicate - exact match
strWhere = strWhere & " AND " & "HPG Members Overview.City = """ &
Me.City & """"
End If


' If State
If Nz(Me.State) "" Then
'Add it to the predicate - exact match
strWhere = strWhere & " AND " & "HPG Members Overview.State = """ &
Me.State & """"
End If


' If MM Name
If Nz(Me.MM_Name) "" Then
'Add it to the predicate - match on leading characters
strWhere = strWhere & " AND " & "HPG Members Overview.MM Name Like "
* " & Me.MM_Name & " * ""
End If


' If Agent Contact Name
If Nz(Me.Agent_Contact_Name) "" Then
'Add it to the predicate - exact match
strWhere = strWhere & " AND " & "HPG Members Overview.Agent Contact
Name = '" & Me.Agent_Contact_Name & "'"
End If

' If Date of Contact
If IsDate(Me.Date_of_Contact) Then
' Add it to the predicate - exact
strWhere = strWhere & " AND " & "HPG Members Overview.Date of
Contact = " & GetDateFilter(Me.Date_of_Contact)
ElseIf Nz(Me.Date_of_Contact) "" Then
strError = cInvalidDateError
End If

If strError "" Then
MsgBox strError
Else
'DoCmd.OpenForm ".frmBrowseMembers", acFormDS, , strWhere,
acFormEdit, acWindowNormal
If Not Me.FormFooter.Visible Then
Me.FormFooter.Visible = True
DoCmd.MoveSize Height:=Me.WindowHeight + Me.FormFooter.Height
End If

(The lines below are highlighted yellow)
Me.Browse_Members.Form.Filter = strWhere
Me.Browse_Members.Form.FilterOn = True

End If
End Sub
  #2  
Old October 24th, 2008, 06:28 PM posted to microsoft.public.access
Dale Fye
external usenet poster
 
Posts: 2,651
Default StrWhere error runtime 2448

Since your table/query name has spaces in it, you need to wrap it in
brackets. Replace:

HPG Members Overview.

with:

[HPG Members Overview].

You will also need to do this with your fields:
[MM Name], [Agent Contact Name], [Date of Contact]

This is one of the reasons I NEVER include spaces in the name of tables or
fields. If I feel I need separation for readability, I separate words with
an underscore (_).

Also, your Openform line has ".frmBrowseMembers", do you mean
"frmBrowseMembers"? It is also remarked out (but I guess you probably
already knew that!

Let me know whether these changes resolve your problem. If not, copy your
corrected code and post it back here for further analysis.
--
HTH
Dale

Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



"Renee" wrote:

I am trying to have a specific form to be used as a quick search but i am
having a difficult time & I just give up. Anyone pls help me get this form
going. Thx.

My Formula is as followed on the event:
Private Sub Ctl_Search_Click()
Const cInvalidDateError As String = "You have entered an invalid date."
Dim strWhere As String
Dim strError As String

strWhere = "1=1"

' If Primary Code
If Nz(Me.Primary_Code) "" Then
'Add it to the predicate - exact match
strWhere = strWhere & " AND " & "HPG Members Overview.Primary Code =
" & Me.Primary_Code & ""
End If


' If Facility
If Nz(Me.Facility) "" Then
'Add it to the predicate - match on leading characters
strWhere = strWhere & " AND " & "HPG Members Overview.Facility Like
" * " & Me.Facility & " * ""
End If


' If City
If Nz(Me.City) "" Then
'Add it to the predicate - exact match
strWhere = strWhere & " AND " & "HPG Members Overview.City = """ &
Me.City & """"
End If


' If State
If Nz(Me.State) "" Then
'Add it to the predicate - exact match
strWhere = strWhere & " AND " & "HPG Members Overview.State = """ &
Me.State & """"
End If


' If MM Name
If Nz(Me.MM_Name) "" Then
'Add it to the predicate - match on leading characters
strWhere = strWhere & " AND " & "HPG Members Overview.MM Name Like "
* " & Me.MM_Name & " * ""
End If


' If Agent Contact Name
If Nz(Me.Agent_Contact_Name) "" Then
'Add it to the predicate - exact match
strWhere = strWhere & " AND " & "HPG Members Overview.Agent Contact
Name = '" & Me.Agent_Contact_Name & "'"
End If

' If Date of Contact
If IsDate(Me.Date_of_Contact) Then
' Add it to the predicate - exact
strWhere = strWhere & " AND " & "HPG Members Overview.Date of
Contact = " & GetDateFilter(Me.Date_of_Contact)
ElseIf Nz(Me.Date_of_Contact) "" Then
strError = cInvalidDateError
End If

If strError "" Then
MsgBox strError
Else
'DoCmd.OpenForm ".frmBrowseMembers", acFormDS, , strWhere,
acFormEdit, acWindowNormal
If Not Me.FormFooter.Visible Then
Me.FormFooter.Visible = True
DoCmd.MoveSize Height:=Me.WindowHeight + Me.FormFooter.Height
End If

(The lines below are highlighted yellow)
Me.Browse_Members.Form.Filter = strWhere
Me.Browse_Members.Form.FilterOn = True

End If
End Sub

  #3  
Old October 24th, 2008, 08:07 PM posted to microsoft.public.access
Steve Schapel
external usenet poster
 
Posts: 1,422
Default StrWhere error runtime 2448

Renee,

In addition to Dale's excellent observations, here are a few more
problems in your code...

Consider this example:

' If Facility
If Nz(Me.Facility) "" Then
'Add it to the predicate - match on leading characters
strWhere = strWhere & " AND " & "HPG Members Overview.Facility
Like " * " & Me.Facility & " * ""
End If

1. Where you are using a * wildcard, it should not also have spaces
around it, otherwise the search criteria will also be looking for spaces
in the data.

2. There is ambiguous usage of the quote marks.

3. Your use of the Nz() function is not correct. If you want it to
return a zero-length string, you need to specify the "value if null"
argument.

Thus, I think you should try it like this:
' If Facility
If Nz(Me.Facility, "") "" Then
'Add it to the predicate - match on leading characters
strWhere = strWhere & " AND [HPG Members Overview].[Facility]
Like '*" & Me.Facility & "*'"
End If

Mind you, your comment "match on leading characters" does not seem to be
what is being done here... this is matching on the entry in the Facilty
control being found *anywhere* within the data in the Facility field.

In any case, probably preferable to the Nz() function in this context
would be:
If IsNull(Me.Facility) Then
Other alternatives would be:
If Me.Facility & "" "" Then
If Len(Me.Facility & "") Then

There are similar considerations in all sections of your code.

I am not aware of the GetDateFilter function you are using, but if it
returns a date, I would also suspect that you may need to enclose that
criteria in # delimiters.

--
Steve Schapel, Microsoft Access MVP


Dale Fye wrote:
Since your table/query name has spaces in it, you need to wrap it in
brackets. Replace:

HPG Members Overview.

with:

[HPG Members Overview].

You will also need to do this with your fields:
[MM Name], [Agent Contact Name], [Date of Contact]

This is one of the reasons I NEVER include spaces in the name of tables or
fields. If I feel I need separation for readability, I separate words with
an underscore (_).

Also, your Openform line has ".frmBrowseMembers", do you mean
"frmBrowseMembers"? It is also remarked out (but I guess you probably
already knew that!

Let me know whether these changes resolve your problem. If not, copy your
corrected code and post it back here for further analysis.

  #4  
Old October 24th, 2008, 08:24 PM posted to microsoft.public.access
Dale Fye
external usenet poster
 
Posts: 2,651
Default StrWhere error runtime 2448

Steve,

Good catches.

I thought about the NZ() function because I thought I remembered it
returning a zero as the default, not an empty string. But when I tested it
in 2007, NZ( ) without the second argument returned a NullString.

?NZ(NULL) = vbNullString
True
?NZ(Null) = ""
True
--
HTH
Dale

Don''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.



"Steve Schapel" wrote:

Renee,

In addition to Dale's excellent observations, here are a few more
problems in your code...

Consider this example:

' If Facility
If Nz(Me.Facility) "" Then
'Add it to the predicate - match on leading characters
strWhere = strWhere & " AND " & "HPG Members Overview.Facility
Like " * " & Me.Facility & " * ""
End If

1. Where you are using a * wildcard, it should not also have spaces
around it, otherwise the search criteria will also be looking for spaces
in the data.

2. There is ambiguous usage of the quote marks.

3. Your use of the Nz() function is not correct. If you want it to
return a zero-length string, you need to specify the "value if null"
argument.

Thus, I think you should try it like this:
' If Facility
If Nz(Me.Facility, "") "" Then
'Add it to the predicate - match on leading characters
strWhere = strWhere & " AND [HPG Members Overview].[Facility]
Like '*" & Me.Facility & "*'"
End If

Mind you, your comment "match on leading characters" does not seem to be
what is being done here... this is matching on the entry in the Facilty
control being found *anywhere* within the data in the Facility field.

In any case, probably preferable to the Nz() function in this context
would be:
If IsNull(Me.Facility) Then
Other alternatives would be:
If Me.Facility & "" "" Then
If Len(Me.Facility & "") Then

There are similar considerations in all sections of your code.

I am not aware of the GetDateFilter function you are using, but if it
returns a date, I would also suspect that you may need to enclose that
criteria in # delimiters.

--
Steve Schapel, Microsoft Access MVP


Dale Fye wrote:
Since your table/query name has spaces in it, you need to wrap it in
brackets. Replace:

HPG Members Overview.

with:

[HPG Members Overview].

You will also need to do this with your fields:
[MM Name], [Agent Contact Name], [Date of Contact]

This is one of the reasons I NEVER include spaces in the name of tables or
fields. If I feel I need separation for readability, I separate words with
an underscore (_).

Also, your Openform line has ".frmBrowseMembers", do you mean
"frmBrowseMembers"? It is also remarked out (but I guess you probably
already knew that!

Let me know whether these changes resolve your problem. If not, copy your
corrected code and post it back here for further analysis.


  #5  
Old October 24th, 2008, 08:57 PM posted to microsoft.public.access
Steve Schapel
external usenet poster
 
Posts: 1,422
Default StrWhere error runtime 2448

Interesting, Dale. Thanks, I didn't know that.

I think you'll also find:
? Nz(Null) = 0
True

So maybe Renee's original usage of Nz would work after all.
Nevertheless, in my opinion it's too loosey-goosey without the
ValueIfNull specified, so my recommendation stands.

--
Steve Schapel, Microsoft Access MVP

Dale Fye wrote:

?NZ(NULL) = vbNullString
True
?NZ(Null) = ""
True

  #6  
Old October 25th, 2008, 12:20 AM posted to microsoft.public.access
Dale Fye
external usenet poster
 
Posts: 2,651
Default StrWhere error runtime 2448

That is interesting, because if you just do:

?":" & NZ(Null) & ":"

You get:

::

I tend to always supply the Optional argument. Just a habit I got into.

Dale

"Steve Schapel" wrote in message
...
Interesting, Dale. Thanks, I didn't know that.

I think you'll also find:
? Nz(Null) = 0
True

So maybe Renee's original usage of Nz would work after all. Nevertheless,
in my opinion it's too loosey-goosey without the ValueIfNull specified, so
my recommendation stands.

--
Steve Schapel, Microsoft Access MVP

Dale Fye wrote:

?NZ(NULL) = vbNullString
True
?NZ(Null) = ""
True



 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 03:41 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 OfficeFrustration.
The comments are property of their posters.