[Access] Procedure wordt 2× uitgevoerd

Pagina: 1
Acties:

  • MichielPH
  • Registratie: Februari 2005
  • Laatst online: 02-04 21:03
Goedemorgen!

Met VBA open ik een formulier om deze te bewerken, op dit nieuwe formulier zet ik een aantal labels; deze labels krijgen een OnClick-event mee. Dit doe ik met dit stukje code:
code:
1
2
3
4
    Set lblOrders(I) = CreateControl("frm1", acLabel, , , , 340 * (CDate(rsOrders.Fields("Begindatum").Value) - Eerstedag) + 340, 500 * I - 300, 340 * (CDate(rsOrders.Fields("Einddatum").Value) - CDate(rsOrders.Fields("Begindatum").Value)))
    lblOrders(I).Caption = rsOrders.Fields("Klantnaam").Value + ": " + rsOrders.Fields("Artikelcode").Value
    
    lblOrders(I).OnClick = "=Knop_Click(" + Trim(Str(I)) + ")"
Bovenstaande staat in een loop, dus I = 1 tot 10.
code:
1
2
3
Sub Knop_Click(I)
  MsgBox Str(I)
End Sub
Bovenstaande staat reeds in het formulier, frm1

Als ik nu een label aanklik, krijg ik 2 popup's. Wat doe ik fout?

Bedankt,
Michiel

  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Ik denk dat je even het beste de code kan tracen om te kijken wat er precies mis gaat.

Zit er niet misschien ook een OnClick op het form?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • MichielPH
  • Registratie: Februari 2005
  • Laatst online: 02-04 21:03
Boss schreef op vrijdag 28 oktober 2005 @ 14:33:
Ik denk dat je even het beste de code kan tracen om te kijken wat er precies mis gaat.
Wat valt er te tracen dan? Het enige wat er is, is een label met als OnClick-event "=Knop_Click(3)" en een één-regelige sub.
Zit er niet misschien ook een OnClick op het form?
Nee+ toch maar even getest: Als ik toch een event aan toewijs, dan wordt deze alleen uitgevoerd indien er niets boven ligt.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

In je on_click event gebruik je een =Sub(). Subroutines geven echter geen retourwaarden. Access geeft blijkbaar geen foutmelding maar voert de routine nog een keer uit. De logica daarvan ontgaat me, maar iig als je van je sub een function maakt ben je van het probleem af.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • MichielPH
  • Registratie: Februari 2005
  • Laatst online: 02-04 21:03
Bedankt, het werkt!

Watvoor waarde verwacht Acces terug dan? Ik retourneer namelijk niets naast de null die de function standaard zal zijn. Ook als je het door Access zelf aan laat maken is het een Private Sub, geen Functuin.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Nu gooi je een eventprocedure en een aan te roepen functie door elkaar. Eventprocedures worden inderdaad als private sub gedeclareerd, maar wat jij doet is een shortcut om in de eventprocedure direct een andere functie aan te roepen. M.a.w. wat jij doet is gelijk aan:
code:
1
2
3
Private Sub Label3_click()
     dummy=knop_click(3)
End Sub

Dat '=' zorgt ervoor dat knop_click() een functie moet zijn. Dat er vervolgens niets met die retourwaarde gebeurt is verder niet belangrijk. ;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1