Toon posts:

[vb] een functie laten weten van welk form je komt

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit dus met het volgende:

Ik ben bezig met een rekenprogramma voor school. We moeten dit met een groepje doen, en gezien het feit dat ik een beetje bekend ben met databases heb ik besloten om het database gedeelte te doen.

Dat werkt allemaal redelijk goed. Nu wil ik dus alles in modules gaan plaatsen, waarbij ik echter op 1 probleempje stuit. Ik wil graag 1 functie gebruiken voor 2 forms. En dat is een functie die namen uit de database haalt en die in een list_veld plaatst. Alleen vanuit die module moet ik aangeven welk form ik moet hebben.

Dus ik wil graag het form in een variabele meegeven naar de functie om die te gebruiken. Alleen dit lukt niet. Heeft iemand misschien een ID?

BvD

Verwijderd

function blaat (waarde1 as integer, waarde2 as long, formulier as form)


end function

Verwijderd

Topicstarter
Verwijderd schreef op 10 December 2002 @ 18:52:
function blaat (waarde1 as integer, waarde2 as long, formulier as form)


end function
Ja , ik zag het staan, maar die formulier moet ik dan toch vullen met de naam van het form waar ik vandaan kom?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 00:27

mulder

ik spuug op het trottoir

Dat weet je toch ook als je die functie aanroept?

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
maar hij werkt niet....

dit is mijn code van Form_Load waarin de functie wordt aangeroepen

Private Sub Form_Load()
Dim sName As String
Dim formulier As Form
Set db = OpenDatabase(App.Path & "\telprogramma.mdb")
Call Module1.GetFromDatabase(sName, formulier)
Call Module1.FillCombo
End Sub

en dit is de functie zelf:

Function GetFromDatabase(sName As String, formulier As Form)
Dim i As Integer
On Error GoTo Foutje
Call Module1.setDb(db)
Set RS = db.OpenRecordset("SELECT naam FROM leerlingen", dbOpenDynaset)
RS.MoveLast
teller = RS.RecordCount
RS.MoveFirst
For i = 1 To teller
formulier.lstleerlingen.AddItem (RS!naam)
RS.MoveNext
Next
RS.Close
lstleerlingen.Refresh
GoTo Eind
Foutje:
MsgBox ("Maak leerlingen aan")
Eind:
End Function

wat is hier dan fout aan?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 00:27

mulder

ik spuug op het trottoir

Het je formulier ook echt formulier. Probeer anders eens 'Me'

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Kep het ! :)

Het zat hem in deze regel:
Call Module1.GetFromDatabase(sName, formulier)

Ik moest van plaats formulier , de naam van het form meegeven. Ik had het eigenlijk ook na kunnen gaan. Stupid me :)

Tnx

Verwijderd

Waarom geef je niet gewoon een referentie door naar 'n listbox ipv smerig allerlei form en control namen hardcoded in je functie te zetten?

Verwijderd

Topicstarter
Nou, als ik een kei van een programmeur was had ik daar vast aan gedacht, maar aangezien het feit dat ik niet eens wat je precies bedoelt en hoe daar uberhaupt aan te beginnen laat ik het denk ik hier maar bij ;)

Verwijderd

Mja als je ook maar enige intresse had getoont had ik of iemand anders wellicht nog wel de moeite genomen het uit te leggen maar 't schijnt je niet zo heel veel te boeien..

[ Voor 3% gewijzigd door Verwijderd op 10-12-2002 19:29 ]


Verwijderd

Topicstarter
Verwijderd schreef op 10 December 2002 @ 19:27:
Mja als je ook maar enige intreses had getoont had ik of iemand anders wellicht nog wel de moeite genomen het uit te leggen maar 't schijnt je niet zo heel veel te boeien..
nou, het boeit me wel degelijk, maar ik ging er eigenlijk meer vanuit dat ik het eerst zelf maar eens op moest zoeken. En dat ben ik ook wel van plan. Want alles wat sneller en mooier gaat heeft mijn interesse. En hoewel ik helemaal niet van plan ben om later programmeur te worden, is het altijd leuk om er toch genoeg vanaf te weten, mocht je toch ooit eens een mogelijkheid krijgen tot, toch?

;) maar als je urls oid hebt, of zelf een klein voorbeeld wilt geven, dat zou ik zeker op prijs stellen.

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Yarvieh bedoeld het zo:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub GetFromDatabase(sName As String, lst as ListBox)
Dim i As Integer
Dim RS as Recordset

On Error GoTo ErrHandler

Call Module1.setDb(db)
Set RS = db.OpenRecordset("SELECT naam FROM leerlingen", dbOpenDynaset)

For i = 1 To RS.RecordCount
  lst.AddItem (RS!naam)
  RS.MoveNext
Next

Set RS = Nothing
lstleerlingen.Refresh

Exit Sub

ErrHandler:
  MsgBox ("Maak leerlingen aan")

End Function


Waarom heb je eigenlijk die variabele sName nodig, die kun je toch gewoon weglaten?

[ Voor 12% gewijzigd door robjanssen op 10-12-2002 19:48 ]


Verwijderd

Topicstarter
Hetzelfde dus zoals ik ook met het formulier doe... of heb ik dat misschien verkeerd?
en met dat exit sub is wel makkelijk zeg.. dan hoef ik geen goto eind meer te geven zie ik :)

Klopt ja, sName kan idd gewoon weg, die is van een andere functie :D

[ Voor 18% gewijzigd door Verwijderd op 10-12-2002 19:51 ]


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Ja in principe hetzelfde als je met het formulier doet.
Maar als je een formulier meegeeft, dan moet op elk formulier de listbox dezelfde naam hebben, anders werkt je functie niet.
Als je de ListBox als parameter meegeeft, dan maakt het niet uit welke naam de ListBox heeft of op welk Formulier hij staat.
Het is dus beter om een ListBox mee te geven aan de functie.

Verwijderd

Topicstarter
robjanssen schreef op 10 december 2002 @ 20:47:
Ja in principe hetzelfde als je met het formulier doet.
Maar als je een formulier meegeeft, dan moet op elk formulier de listbox dezelfde naam hebben, anders werkt je functie niet.
Als je de ListBox als parameter meegeeft, dan maakt het niet uit welke naam de ListBox heeft of op welk Formulier hij staat.
Het is dus beter om een ListBox mee te geven aan de functie.
mja , zo had ik het nog niet bekeken. Zo globaliseer je dus de hele meut...
handig.. :)
Pagina: 1