Combo Problem

I have a simple combo that searches the form's underlying table for contact name and moves to the record selected. For some strange reason occasionally the combo will not show all records. It will leave out "John Smith" but show "Jane Smith" and  "Jonny Smith" any reason for this? it's very disconcerting!
DatabaseDekAsked:
Who is Participating?
 
Helen FeddemaConnect With a Mentor Commented:
First, give your combo boxes meaningful names, to make them easier to work with in code.  Next, you might want to filter your row source to exclude records with blank names (if any).  Finally, you no longer need to use the Bookmark property.  Here is the standard code I use for a record selector combo box:

Private Sub cboSelect_AfterUpdate()
'Created by Helen Feddema 29-Apr-2011
'Last modified by Helen Feddema 29-Apr-2011

On Error GoTo ErrorHandler

   Dim strSearch As String

   'For text IDs
   strSearch = "[______ID] = " & Chr$(39) & Me.ActiveControl.Value _
      & Chr$(39)

   'For numeric IDs
   strSearch = "[______ID] = " & Me.ActiveControl.Value

   'Find the record that matches the control
   Me.Recordset.FindFirst strSearch

ErrorHandlerExit:
   Exit Sub

ErrorHandler:
   MsgBox "Error No: " & Err.Number _
      & " in " & Me.ActiveControl.Name & " procedure; " _
      & "Description: " & Err.Description
   Resume ErrorHandlerExit

End Sub

Open in new window

0
 
peter57rCommented:
We need to see the sql of the  rowsource for the query.
If the rowsource is a named/saved  query we need the sql for that.
0
 
DatabaseDekAuthor Commented:
SELECT Project.AccountCode, Project.CustomerName, Project.ProjectRef, Project.Ref, Project.OrderNumber, Project.CustomerOrderNumber, Project.DateCreatedProject AS DateCreated, Project.AccountCode FROM Project ORDER BY Project.CustomerName, Project.AccountCode;

The code that runs for th combo box is:
Please note that the OnError part is in the wrong place could this be the problem? I also just noticed that I am re-querying the very combobox that I am clicking on. I do this so that if a new record is created it immediately appears in the combo. It is an early DB I did 10 years ago. That's my excuse.
Private Sub Combo29_AfterUpdate()
If Me.NewRecord = True Then
    DoCmd.Echo False
        Combo29.Requery
        Combo32.Requery
        Combo34.Requery
        Combo36.Requery
        Combo38.Requery
    DoCmd.Echo True
End If
On Error GoTo Err_Combo29_Click
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[AccountCode] = " & Str(Nz(Me![Combo29], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark

Exit_Combo29_Click:
    Exit Sub
Err_Combo29_Click:
    MsgBox "The selected Project has been Deleted. Click OK and select another Project"
    Resume Exit_Combo29_Click
End Sub
0
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

 
Dale FyeCommented:
To answer your first question, how many records do you have in this recordset you are using as the rowsource for Combo29?  If you have too many records, Access might still be trying to return the entire recordset.

I'm not certain why you would requery the combos immediately after selecting a record in the combo.  This could significantly slow down your application.

If you requery combo29 before doing the "findFirst", then there will be no value for the combo and the find first will not be able to locate the record.  Try disabling or removing the requery code.

Private Sub Combo29_AfterUpdate()

'If Me.NewRecord = True Then
'    DoCmd.Echo False
'        Combo29.Requery
'        Combo32.Requery
'        Combo34.Requery
'        Combo36.Requery
'        Combo38.Requery
'    DoCmd.Echo True
'End If
On Error GoTo Err_Combo29_Click
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[AccountCode] = " & Str(Nz(Me![Combo29], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark

Exit_Combo29_Click:
    Exit Sub
Err_Combo29_Click:
    MsgBox "The selected Project has been Deleted. Click OK and select another Project"
    Resume Exit_Combo29_Click
End Sub
0
 
DatabaseDekAuthor Commented:
Thank you

There is about 400 records in the underlying table/query.

I will remove the re-query code. The difficulty here is that this problem is sporadic and not easy to repeat. So I won't know if it has worked until it comes up again. Closing the database and reopening it sometimes clears the problem.

I asked the following question years ago but had a mixed response. What is the best way to ensure that combo boxes are up to date or updated immediately after a new record is entered without forcing a user to do something like press an F Key or click a save button. Or should this be a separate post?
0
 
DatabaseDekAuthor Commented:
That's great, thank you

When you say that the bookmark is no longer needed does that apply to with Access 2002?

Can you answer the last part of my last post if possible.

Many thanks

Derek
0
 
DatabaseDekAuthor Commented:
Thank you.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.