Group:  Microsoft Access » microsoft.public.access.gettingstarted
Thread: Trap error in Combo Box

Geek News

Trap error in Combo Box
Ray C 12/28/2008 5:52:03 PM
Can anyone help please?
I use a Combo Box as a "Find Box" to list all available (non duplicated)
entries in a table. Great, but I also want the user to input the name that
they want to find and if the name is not in the Table, I want to trap out the
error (The Item does not exist in the List) and tell the user that the name
does not exist in the Table giving them the option "Do you want to create a
new record in that name?"
I can do this if I run the required string through the Record Set but I can
not seem to trap out the error generated by the Combo Box not being able to
find what has been entered.
Any help appreciated
Ray C
Re: Trap error in Combo Box
"tina" <nospam[ at ]address.com> 12/28/2008 6:04:07 PM
have you looked at the NotInList event property of the combobox control?

hth


"Ray C" <RayC[ at ]discussions.microsoft.com> wrote in message
news:A85CAD7E-21FB-4206-A233-2CD515042C3B[ at ]microsoft.com...
[Quoted Text]
> Can anyone help please?
> I use a Combo Box as a "Find Box" to list all available (non duplicated)
> entries in a table. Great, but I also want the user to input the name that
> they want to find and if the name is not in the Table, I want to trap out
the
> error (The Item does not exist in the List) and tell the user that the
name
> does not exist in the Table giving them the option "Do you want to create
a
> new record in that name?"
> I can do this if I run the required string through the Record Set but I
can
> not seem to trap out the error generated by the Combo Box not being able
to
> find what has been entered.
> Any help appreciated
> Ray C


Re: Trap error in Combo Box
Ken Sheridan <kenwsheridan[ at ]yahoo.co.uk> 12/28/2008 6:36:05 PM
On Dec 28, 5:52 pm, Ray C <R...[ at ]discussions.microsoft.com> wrote:
[Quoted Text]
>  Can anyone help please?
> I use a Combo Box as a "Find Box" to list all available (non duplicated)
> entries in a table. Great, but I also want the user to input the name that
> they want to find and if the name is not in the Table, I want to trap out the
> error (The Item does not exist in the List) and tell the user that the name
> does not exist in the Table giving them the option "Do you want to create a
> new record in that name?"
> I can do this if I run the required string through the Record Set but I can
> not seem to trap out the error generated by the Combo Box not being able to
> find what has been entered.
> Any help appreciated
> Ray C

As Tina says, use the control's NotInList event procedure. Here's an
example which adds a City name to a Cities table:

Private Sub cboCities_NotInList(NewData As String, Response As
Integer)

Dim cmd As ADODB.Command
Dim ctrl As Control
Dim strSQL As String, strMessage As String

Set ctrl = Me.ActiveControl
strMessage = "Add " & NewData & " to list?"

strSQL = "INSERT INTO Cities(City) VALUES(""" & _
NewData & """)"

Set cmd = New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdText

If MsgBox(strMessage, vbYesNo + vbQuestion) = vbYes Then
cmd.CommandText = strSQL
cmd.Execute
Response = acDataErrAdded
Else
Response = acDataErrContinue
ctrl.Undo
End If

End Sub

And here's one which does the same, but in this case opens a frmCities
form so that other data than the city name, e.g. the county or state
in which the city is in can also be added to the new record:

Private Sub cboCities_NotInList(NewData As String, Response As
Integer)

Dim ctrl As Control
Dim strMessage As String

Set ctrl = Me.ActiveControl
strMessage = "Add " & NewData & " to list?"

If MsgBox(strMessage, vbYesNo + vbQuestion) = vbYes Then
DoCmd.OpenForm "frmCities", _
DataMode:=acFormAdd, _
WindowMode:=acDialog, _
OpenArgs:=NewData
' ensure frmCities closed
DoCmd.Close acForm, "frmCities"
' ensure city has been added
If Not IsNull(DLookup("CityID", "Cities", "City = """ & _
NewData & """")) Then
Response = acDataErrAdded
Else
strMessage = NewData & " was not added to Cities table."
MsgBox strMessage, vbInformation, "Warning"
Response = acDataErrContinue
ctrl.Undo
End If
Else
Response = acDataErrContinue
ctrl.Undo
End If

End Sub

With this second example the following code also goes in the frmCities
form's Open event procedure to set the DefaultValue property of the
City control on the form to the name of the city added in the combo
box:

Private Sub Form_Open(Cancel As Integer)

If Not IsNull(Me.OpenArgs) Then
Me.City.DefaultValue = """" & Me.OpenArgs & """"
End If

End Sub

Ken Sheridan
Stafford, England

Re: Trap error in Combo Box
Ray C 12/29/2008 10:18:04 PM
This is great Ken, I don't know why i did not work that out for myself. Thank
you so much for your help.

Regards Ray C


"Ken Sheridan" wrote:

[Quoted Text]
> On Dec 28, 5:52 pm, Ray C <R...[ at ]discussions.microsoft.com> wrote:
> > Can anyone help please?
> > I use a Combo Box as a "Find Box" to list all available (non duplicated)
> > entries in a table. Great, but I also want the user to input the name that
> > they want to find and if the name is not in the Table, I want to trap out the
> > error (The Item does not exist in the List) and tell the user that the name
> > does not exist in the Table giving them the option "Do you want to create a
> > new record in that name?"
> > I can do this if I run the required string through the Record Set but I can
> > not seem to trap out the error generated by the Combo Box not being able to
> > find what has been entered.
> > Any help appreciated
> > Ray C
>
> As Tina says, use the control's NotInList event procedure. Here's an
> example which adds a City name to a Cities table:
>
> Private Sub cboCities_NotInList(NewData As String, Response As
> Integer)
>
> Dim cmd As ADODB.Command
> Dim ctrl As Control
> Dim strSQL As String, strMessage As String
>
> Set ctrl = Me.ActiveControl
> strMessage = "Add " & NewData & " to list?"
>
> strSQL = "INSERT INTO Cities(City) VALUES(""" & _
> NewData & """)"
>
> Set cmd = New ADODB.Command
> cmd.ActiveConnection = CurrentProject.Connection
> cmd.CommandType = adCmdText
>
> If MsgBox(strMessage, vbYesNo + vbQuestion) = vbYes Then
> cmd.CommandText = strSQL
> cmd.Execute
> Response = acDataErrAdded
> Else
> Response = acDataErrContinue
> ctrl.Undo
> End If
>
> End Sub
>
> And here's one which does the same, but in this case opens a frmCities
> form so that other data than the city name, e.g. the county or state
> in which the city is in can also be added to the new record:
>
> Private Sub cboCities_NotInList(NewData As String, Response As
> Integer)
>
> Dim ctrl As Control
> Dim strMessage As String
>
> Set ctrl = Me.ActiveControl
> strMessage = "Add " & NewData & " to list?"
>
> If MsgBox(strMessage, vbYesNo + vbQuestion) = vbYes Then
> DoCmd.OpenForm "frmCities", _
> DataMode:=acFormAdd, _
> WindowMode:=acDialog, _
> OpenArgs:=NewData
> ' ensure frmCities closed
> DoCmd.Close acForm, "frmCities"
> ' ensure city has been added
> If Not IsNull(DLookup("CityID", "Cities", "City = """ & _
> NewData & """")) Then
> Response = acDataErrAdded
> Else
> strMessage = NewData & " was not added to Cities table."
> MsgBox strMessage, vbInformation, "Warning"
> Response = acDataErrContinue
> ctrl.Undo
> End If
> Else
> Response = acDataErrContinue
> ctrl.Undo
> End If
>
> End Sub
>
> With this second example the following code also goes in the frmCities
> form's Open event procedure to set the DefaultValue property of the
> City control on the form to the name of the city added in the combo
> box:
>
> Private Sub Form_Open(Cancel As Integer)
>
> If Not IsNull(Me.OpenArgs) Then
> Me.City.DefaultValue = """" & Me.OpenArgs & """"
> End If
>
> End Sub
>
> Ken Sheridan
> Stafford, England
>
>

Home | Search | Terms | Imprint Contact
Newsgroups Reader - provided by WiredBox.Net