Toon posts:

[VBA] Public Function

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende functie in een module gezet:
Public Function selectgebruikerid(gebruikersid As String)


selectgebruikersid = "SELECT Gebruikers_id FROM Gebruikers WHERE Gebruikers_id = '" & gebruikersid & "'"

Set con = New ADODB.Recordset
con.Open selectgebruikersid, CurrentProject.Connection 'voer de query uit

'loop door de recors heen
If con.EOF = False Then
con.MoveFirst
Do While con.EOF = False
gebruikersid = con!Gebruikers_id 'voornaam wordt in variabele gezet
MsgBox (gebruikersid)
con.MoveNext
Loop
con.Close
End If


End Function

Hoe kan ik nu de variabele gebruikersid op een ander formulier aanroepen?

[ Voor 6% gewijzigd door Verwijderd op 29-12-2005 13:39 ]


  • Mozart
  • Registratie: September 2001
  • Laatst online: 20-08 15:37
Een Function levert een waarde op. Kort door de bocht genomen betekend dat dat jij in je formulier het volgende zou moeten zetten:
Visual Basic:
1
Voornaam=SelectGebruikersID(IdVanGebruiker)


Vervolgens wordt de functie SelectGebruikersID aangeroepen en die gaat de juiste waarde opleveren. In jouw definitie van de functie lever je als antwoord echter de volgende string op:
Visual Basic:
1
SELECT Gebruikers_id FROM Gebruikers WHERE Gebruikers_id = '" & gebruikersid & "'"


Dit komt omdat je als variabele in de eerste regel selectgebruikersid gebruikt, terwijl je hier alleen de query even op wilt slaan. Die regel kun je dus beter wijzigen in:
Visual Basic:
1
strQuery="SELECT Gebruikers_id FROM Gebruikers WHERE Gebruikers_id = '" & gebruikersid & "'"


Vervolgens verander je de regel:
Visual Basic:
1
gebruikersid = con!Gebruikers_id 'voornaam wordt in variabele gezet

in
Visual Basic:
1
SelectGebruikersID=con!Gebruikers_id


Probeer maar eens.

[ Voor 10% gewijzigd door Mozart op 02-01-2006 15:29 ]

PSN: PcDCch


Verwijderd

Topicstarter
Het is nu gelukt. Maar ik wil eigenlijk dat die query 1 keer word uitgevoegd en alleen als de functie vanaf een formulier wordt aangeroepen. En als die niet van het juiste formulier wordt aangeroepen moet die de waarde van SelectGebruikersID weer geven. Die daarvoor is opgevraagd. Is dit mogelijk. Want ik heb het geprobeerd maar steeds haalt die alle variabele in die functie leeg.

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 23:54
Allereerst: we hebben hier [code=vb]je code [/code] tags.
Je kan een public variabele definieren, waarin de laatst opgevraagde voornaam beland.
Zet bijvoorbeeld ergens bovenaan in een module:
Visual Basic:
1
Public Dim laatstevoornaam as string

Vervolgens zet je als laatste regel in je functie
Visual Basic:
1
laatstevoornaam = SelectgebruikersID

Als je nu een nieuwe query wilt hebben gebruik je
Visual Basic:
1
voornaam = SelectgebruikersID(ID)

En als je de laatst bequeryde voornaam wilt hebben gebruik je
Visual Basic:
1
voornaam = laatstevoornaam