[AccessD] Odd Error - Embarrassing Workaround

Jim Dettman jimdettman at verizon.net
Tue Dec 5 06:44:06 CST 2017


Rocky,

<<It blows up on Me.Bookmark = rsMe.Bookmark with an error 2001: You
canceled
the previous operation.

So here's the odd thing: if I click Debug and see that line highlighted,
then click F5, the code carries on and displays the selected record.>>

 Sounds like you are are in the middle of another event or operation.
Hitting debug and then resuming allows the other event/operation to
complete.  

 Couple things:

1. I don't see a declare for lngID or rsMe.  I would explicitly declare both
if they are not declared elsewhere.

2. Change this:

    If IsNull(cboVendors) Then Exit Sub

 To

   If IsNull(Me.cboVendors) Then Exit Sub

3. Put Debug.Print "start" and Debug.Print "end" in each of the form events.
Then execute until you get the error.  Check the debug window when you do to
see what last executed.  Should give you a clue as to what is going on.

4. You could also try:

   dbEngine.Idle dbRefreshCache

 at the top of the routine.

 But I would try and figure this out....I don't think your workaround is
going to hold up.   Move to a faster / slower machine and could easily see a
different result.

Jim. 



-----Original Message-----
From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of
Rocky Smolin
Sent: Tuesday, November 28, 2017 11:24 AM
To: 'Access Developers discussion and problem solving'; 'Off Topic'
Subject: [AccessD] Odd Error - Embarrassing Workaround

Dear Lists:

 

In the code below which is in the after update event of a combo box, I want
to position the form to the selected vendor in the combo box list.  Cookie
cutter.  Done it a hundred times:

 

Private Sub cboVendors_AfterUpdate()

 
    If IsNull(cboVendors) Then Exit Sub
 
    lngID = Val(Me.cboVendors.Column(0))

    Set rsMe = Me.RecordsetClone

    rsMe.FindFirst "fldVendorID= " & lngID

    If rsMe.NoMatch = True Then

        MsgBox "Record Not Found", vbExclamation

    Else


        Me.Bookmark = rsMe.Bookmark

    End If

    Me.cmdExit.SetFocus
    Me.cboVendors.Visible = False

End sub

 

The code's a little more wordy than it needs to be because I've been trying
various fixes which, while they shouldn't work, often do in Access. J

 

It blows up on Me.Bookmark = rsMe.Bookmark with an error 2001: You canceled
the previous operation.

 

So here's the odd thing: if I click Debug and see that line highlighted,
then click F5, the code carries on and displays the selected record.

 

I've got a workaround that's so esthetically and professionally offensive
that I hesitate to show it here, but we're all friends, right?

 

Private Sub cboVendors_AfterUpdate()

 

    If IsNull(cboVendors) Then Exit Sub

    

    lngID = Val(Me.cboVendors.Column(0))

    Set rsMe = Me.RecordsetClone

    

    rsMe.FindFirst "fldVendorID= " & lngID

    If rsMe.NoMatch = True Then

        MsgBox "Record Not Found", vbExclamation

    Else

        On Error Resume Next

        Me.Bookmark = rsMe.Bookmark

        Me.Bookmark = rsMe.Bookmark

        On Error GoTo 0

    End If

    

    Me.cmdExit.SetFocus

   Me.cboVendors.Visible = False

 

End Sub

 

All I did was add the On Error line and issue the Bookmark a second time.
The second line apparently works. 

 

Can anyone help me avoid the embarrassment of having to explain to the next
programmer on this app why that code is there? Does anyone know what the
problem is and perhaps a fix?

 

I already tried recompile.  And also ran it through the decorrupter.

 

MTIA

 

 

Rocky Smolin (semi-ret.)

Beach Access Software

760-683-5777

 <http://www.bchacc.com> www.bchacc.com

 <http://www.e-z-mrp.com> www.e-z-mrp.com

Skype: rocky.smolin

 

 

-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com



More information about the AccessD mailing list