Global Variables? Kan dat?

Status
Niet open voor verdere reacties.

Systemizer X100

Terugkerende gebruiker
Lid geworden
24 mei 2003
Berichten
1.636
Hallo,

ik ben nog een beginner met Visual Basic. Ik ben bezig met een test waarbij je in de eerste form je data invoert en dan op de OK knop klikt en dat de gegevens in een soort van formulier terecht komen. Ik heb daarbij alle text die je in moet vullen opgeslagen in variables op deze manier:

dim Naam
Naam = NaamInvoer

Als ik deze variable dan wil oproepen in form 2 lukt het niet. Ik kan deze alleen in form 1 (waarin het gemaakt is) gebruiken.

En dan nog wat, ik ben ook bezig met een test waarbij je je username en password in moet voeren en als deze juist zijn kun je toegang krijgen tot de toolbox (die nagenoeg leeg is).
Maar hoe kan ik nakijken of bijde variablen juist zijn? Ik heb nu een 'If' statement binnen een 'If' statement staan, maar volgens mij moet dit anders kunnen.
 
Ja, net als bij andere programmeertalen worden Global Variables in VB ook gebruikt. Je moet ze inderdaad gebruiken om variabelen behalve in Form1 ook in andere Forms te kunnen worden gebruikt.

Om dit te verwezenlijken moet je een module in je project toevoegen en aldaar de benodigde variabelen te declareren.

Hoe je een module in je project moet toevoegen volgt hieronder de uitleg:

1) Klik achtereenvolgens op Project/Add Module.
2) Er verschijnt een venster met de naam "Add Module"
3) Als het goed is, staat het tabblad "New" al geselecteerd. Ik ga er vanuit dat dit het geval is. klik eerst op het Module icoontje en dan op de knop "Open". Er verschijnt nu een scherm met de naam "Project1 - Module1 (Code)" in dit venster voer je dan de variabelen in.

Bijvoorbeeld de variabelen:

Global Naam As String
Global Adres As String
Global Woonplaats As String

Dit heb je alvast, nu volgt een voorbeeld hoe je deze global variables kunt toepassen:

1) Plaats op Form1 drie text-boxes en een button. De drie text-boxes hebben dan respectievleijk de namen text1.text, text2.text en text3.text. Deze drie namen verander je respectievelijk in txtNaam, txtAdres en txtWoonplaats. Hoe je de oorspronkelijke namen van deze 3 text-boxen(text1.text, text2.text en text3.text) in de nieuwe namen kunt veranderen, moet je naar de eigenschappen van elke text-box gaan en bij "Name" de nieuwe naam intypen.

2) De code voor de knop:

Code:
Private Sub Command1_Click()
   Naam = txtNaam
   Adres = txtAdres
   Woonplaats = txtWoonplaats
   Form2.Show
End Sub

3) Op Form2 plaats je ook 3 text-boxen. Deze 3 text-boxen hebben ook de namen text1.text, text2.text en text3.text. Laat voor het gemak die namen zo staan, verander ze dus niet(dit kun je t.z.t. wel eventueel doen voor de netheid v.d. te gebruiken variabelenamen)

4) Neem verder onderstaande code voor Form2 over:

Code:
Private Sub Form_Load()
   Text1 = Naam
   Text2 = Adres
   Text3 = Woonplaats
End Sub

Run het programma en ga nu als vogt te werk:
1) Voer de 3 text-boxen(invoervakken in Form1) met gegevens in.
2) klik op de knop

Je ziet dat Form2 de variabelen in Form1 ook kan "zien".

Heb nu even geen tijd om je 2e vraag (over username en password) te beantwoorden, sorry. Misschien later. Maar het is echt niet zo moeilijk hoor.

Dennis.
 
Ik krijg een error als ik dan bij de knop deze code toevoeg:

Naam = txtNaam

ik had eerst deze alleen ff gedaan

ik krijg deze foutmelding:

Compile error:
Function or interface has been marked as restricted, or the function uses an Automation type not supported in Visual Basic


wat is da?
 
Hmm het was waarschijnlijk een vreemde fout in mijn code. Ik heb een het programma opnieuw geschreven en nu werkt het wel. Dankje!
 
Kan ik in een module ook een vast paswoord en username voor zeg maar, de admin maken?
 
Nee, in een module declareer je alleen variabelen die over je hele project (gebruikmakend van meer dan één Form) kan worden gebruikt.

Dennis.
 
Ok, maar hoe zet ik dan een vast paswoord? dat evenals bij meerdere forms op te roepen is
 
Oke, je weet nu waarvoor een module dient. Je kunt dus een Global variabele gebruiken voor username en password in al die verschillende Forms. Maar de username en het password moet je in een (tekst)bestand opslaan en/of in een databasje. Dat databasje maak je middels VISDATA aan.

Dennis.
 
Ja, het bevindt zich in Add-Ins/Visual Data Manager/File/New .....enz.

Laat het anders maar. Zal straks op een simpele manier gaan uitleggen.
Met het ene oog kijk ik naar het toetsenbord en met het andere naar voetbal(ha ha ha).

Dennis.
 
Hahaha :D. Ok ik heb toch alle tijd. Nou ja, tot het eind van de zomervakantie dan.
 
Oké, doe mijn best hoor. Zal starks ff verder kijken, tenzij andere VB'ers al voor mij zijn geweest. Heb nog nooit eerder die mooie icoontjes gebruikt, weet het niet eens te gebruiken(ben te lui om het te leren).

Dennis.
 
Wat. Die emoticons? Haha. Gewoon op zo'n afbeelding klikken. *klik*:D <<< zie je? *klik*:p Makkie. Haha
 
Dit is eigenlijk niet DE manier hoor, met een databasje is eigenlijk beter. Maar dit komt later wel.

1) In een module:

Global UserName As String
Global Password As String

2) Op Form1(maar ook bij de andere Forms):

Twee invoervakken(text-boxes) en één knop

Namen v.d. 2 invoervakken: txtUserName en txtPassword en de naam v.d. knop(button) btnInloggen.

3) Code Form_Load voor Form1(wordt ook als eerste geladen):

Code:
Private Sub Form_Load()
   UserName = "abc"
   Password = "def"
End Sub

4) Code voor de knop "Inloggen" in Form1:

Code:
Private Sub Command1_Click()
   UserName = Trim(txtUserName)
   Password = Trim(txtPassword)
   If UserName <> "abc" And Password <> "def" Then
     MsgBox "Userame en Password zijn onjuist."
     Exit Sub
   End If
   If UserName = "abc" And Password <> "def" Then
       MsgBox "Het Password is onjuist."
       Exit Sub
   End If
   If UserName <> "abc" And Password = "def" Then
       MsgBox "UserName is onjuist."
       Exit Sub
   End If
   If UserName = "abc" And Password = "def" Then
       MsgBox "Je bent nu ingelogd"
       'Hier volgt de verdere codes
   End If
End Sub

Run het programma en probeer het uit.

Dennis.
 
Geplaatst door Systemizer X100
Wat. Die emoticons? Haha. Gewoon op zo'n afbeelding klikken. *klik*:D <<< zie je? *klik*:p Makkie. Haha
Echt wel, thanks! :thumb:
 
Het is nog gelukt ook! Ja, ben een luibeest zie je.
Nogmaals, :thumb:

Dennis.
 
Een "Trim-functie" werkt bij elke VB versie en daar ligt het niet aan. De text-box voor de UserName moet je "txtUserName" laten noemen. Hoe je dat moet doen, heb ik reeds eerder uiteengezet.

Dennis.
 
Voordat ik mijn code hier deponeer, test ik hem altijd eerst. Bij mij werkt alles naar behoren. :p

Dennis.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan