[AccessD] Dynamically calling combobox_afterupdate from form_open event

Ryan W wrwehler at gmail.com
Mon Mar 6 13:34:55 CST 2023


Charlotte,
  I'm using Step 2, because I have to "step over" the value I want filled
in the combo box. eg strArgs(0) = "cbxJobID" and strArgs(1) = 12345,
strArgs(2) = "cbxRep", strArgs(3) = "Bob Johnson" and so on.


  The msgbox that pops up for error handling is selling me the proper
formcontrol_afterupdate name, so I know it's "composing" the right name to
attempt to call.



On Mon, Mar 6, 2023 at 1:19 PM Charlotte Foust <charlotte.foust at gmail.com>
wrote:

> I haven't done this in a long time, so I have to ask why you're using a
> "Step 2" In the line "For l = 0 To UBound(strArgs) Step 2"?   When I ran
> into an issue with things like this, I added message boxes or line prints
> to see what each result was so I could track down the exact location
> throwing the error.  You aren't showing any error handling, so I am making
> assumptions.  You need to at least see the result of the Eval() before you
> try to call it.
>
> Charlotte Foust
> (916) 206-4336
>
>
> On Mon, Mar 6, 2023 at 11:03 AM Ryan W <wrwehler at gmail.com> wrote:
>
> > I have a form that takes openargs, the openargs are such as:
> >
> > cbxJobID|12345
> >
> >
> > The key/pair set can be repeated.. the key is the control name, the other
> > is the data to input into the control name
> >
> > my form open event is as such:
> >
> > Private Sub Form_Open(Cancel As Integer)
> >     Dim l         As Long: l = 0
> >     Dim strArgs() As String
> >     If IsNull(Me.OpenArgs) Then Exit Sub
> >
> >     strArgs = Split(Me.OpenArgs, "|")
> >     For l = 0 To UBound(strArgs) Step 2
> >         Me(strArgs(l)) = strArgs(l + 1)
> >         Call Eval(strArgs(l) & "_AfterUpdate")
> >     Next l
> >
> > End Sub
> >
> >
> >
> > The problem I'm having is the "Call Eval()" part.  I get an error:
> > "Run-Time error '2482':
> > Cannot find name 'cbxJobID_AfterUpdate' you entered in the expression.
> >
> > However that exists.  I've tried making it a public sub, private sub,
> > public or private function.
> >
> > None of it seems to work. Maybe it can't be a form level function/sub,
> has
> > to be module level?
> >
> > The microsoft documentation under examples shows the method I'm using is
> > supported:
> >
> > https://learn.microsoft.com/en-us/office/vba/api/access.application.eval
> >
> >
> > The following example assumes that you have a series of 50 functions
> > defined as A1, A2, and so on. This example uses the *Eval* function to
> call
> > each function in the series.
> > Sub CallSeries()
> >
> >  Dim intI As Integer
> >
> >  For intI = 1 To 50
> >  Eval("A" & intI & "()")
> >  Next intI
> >
> > End Sub
> >
> >
> > So, something is missing here... can anyone clue me in?
> > --
> > AccessD mailing list
> > AccessD at databaseadvisors.com
> > https://databaseadvisors.com/mailman/listinfo/accessd
> > Website: http://www.databaseadvisors.com
> >
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> https://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>


More information about the AccessD mailing list