wat met lege vakken
Ik ben bezig met het leren van visual basic, ik heb nu een klein probleempje waar ik niet uit geraak, ik heb iets gemaakt waarbij een reeks simpele berekeningen gemaakt worden, nu is het probleem dat als één van de tekstvakken niet is ingevuld, ik steeds een foutmelding krijg, wat kan ik hieraan doen.
-
- Elite Poster
- Berichten: 1676
- Lid geworden op: 23 mei 2003, 23:13
- Uitgedeelde bedankjes: 1 keer
Het meest logische lijkt mij dat je tijdens je berekeningen rekening houdt met die lege vakken, ttz. rekenkundige functies kunnen slecht omgaan met spaties (of alfabetische karakters). Dus voordat je rekent : testen op inhoud.
If you can't beat them, confuse them.
wa bedoelde met "mandatory", ik begin nog maar net met vb en ik zou niet weten wat je bedoeld, en bij de volgende stel ik de vraag, hoe kun je daar rekening mee houden, als je al de vakken nodig hebt.
- Sasuke
- Elite Poster
- Berichten: 4854
- Lid geworden op: 13 aug 2003, 20:25
- Locatie: Vlaanderen
- Uitgedeelde bedankjes: 153 keer
- Bedankt: 332 keer
- Contacteer:
Mark,
Mandatory = verplicht ... dat je programma dus verwacht dat elk veld opgevuld is met data. Maar ik vermoed dat cueboy's antwoord logischer/correcter is dan het mijne ... denk dat je inderdaad beter eens kijkt of je programma niet elk veld gaat bekijken en de inhoud gebruikt. Want als er dan niks instaat gaat je berekening niet meer kloppen. Controleren op inhoud kun je dus best doen , hoe ... dat weet ik ook niet .
Grtz,
Sasuke
Mandatory = verplicht ... dat je programma dus verwacht dat elk veld opgevuld is met data. Maar ik vermoed dat cueboy's antwoord logischer/correcter is dan het mijne ... denk dat je inderdaad beter eens kijkt of je programma niet elk veld gaat bekijken en de inhoud gebruikt. Want als er dan niks instaat gaat je berekening niet meer kloppen. Controleren op inhoud kun je dus best doen , hoe ... dat weet ik ook niet .
Grtz,
Sasuke
-
- Elite Poster
- Berichten: 1676
- Lid geworden op: 23 mei 2003, 23:13
- Uitgedeelde bedankjes: 1 keer
Mark, ik ken op niet zo direct VB, maar kun je niet zeggen dat die vakken geen tekstvakken, maar velden zijn waar een numerische inhoud in moet komen, zijn ? (pfieuw, moeilijke zin - sorry daarvoor)
If you can't beat them, confuse them.
- meon
- Administrator
- Berichten: 16609
- Lid geworden op: 18 feb 2003, 22:02
- Twitter: meon
- Locatie: Bree
- Uitgedeelde bedankjes: 564 keer
- Bedankt: 759 keer
- Contacteer:
VB is voor mij beetje lang geleden, maar in PHP kan je kijken of variabelen wel bestaan met de functie isset(), of gewoon uitroepingsteken, bvb if (!$variabele) { } ...
Ik wil maar zeggen, misschien moet je if-clauses inbouwen die eerst controleren of die velden wel ingevuld zijn of niet? En om rekenkundige redenen dan de inhoud met 0 invullen of zo...
Ik wil maar zeggen, misschien moet je if-clauses inbouwen die eerst controleren of die velden wel ingevuld zijn of niet? En om rekenkundige redenen dan de inhoud met 0 invullen of zo...
-
- Elite Poster
- Berichten: 5008
- Lid geworden op: 15 sep 2002, 17:58
- Locatie: Belgium, Ghent
- Contacteer:
Zou je eens een stukje code online willen zetten waarover het gaat dan kunnen we beter volgen...
een voorbeeldje wat zou moeten werken:
Deze regel code telt gewoon twee tekstvelden bij elkaar op en plaatst de som in een label (lbl). Die CInt zorgt voor een conversie van String naar Int.. CDouble, CLong etc bestaan ook. Zie FCL zou ik zeggen.
Controle.. dacht dat er een method isNumeric of isString bestaat.. waarmee je kan checken..
een voorbeeldje wat zou moeten werken:
Code: Selecteer alles
lblResult.Text() = CInt(numVeld1.Text()) + CInt(numVeld2.Text())
Deze regel code telt gewoon twee tekstvelden bij elkaar op en plaatst de som in een label (lbl). Die CInt zorgt voor een conversie van String naar Int.. CDouble, CLong etc bestaan ook. Zie FCL zou ik zeggen.
Controle.. dacht dat er een method isNumeric of isString bestaat.. waarmee je kan checken..
I love it when a plan comes together!
Code: Selecteer alles
Private Sub bereken_Click()
uitkomst.Text = (prijs * aantal) + (prijs * aantal / 100 * winst)
End Sub
dit is dus een deel van de code waar het fout gaat, stel nu dat ik in het vak winst niks invul, dan krijg ik een foutmelding en dat wil ik oplossen, wat is daarvoor het simpelste want ik snap er echt niet veel van.
Zet er gewoon een if voor, bv.:
Code: Selecteer alles
if NOT(isNumeric(Prijs) AND isNumeric(Aantal) AND isNumeric(Winst)) then
MsgBox "Foute ingave"
else
uitkomst.Text = (prijs * aantal) + (prijs * aantal / 100 * winst)
end if
Laatst gewijzigd door Lukse 03 maa 2004, 15:01, in totaal 1 gewijzigd.
Dit kan je heel makkelijk oplossen door een foutafhandeling.
Zo ga je te werk:
[+] Eerst natuurlijk al je variabelen declareren, en daaronder begin je
[+] Dan schrijf je je programma uit, en dan schrijf je tussen de laatste regel van je eigenlijk programma en "End Sub" dit:
Ik kom nog even terug op die Err.Number, daar zal hij het foutnummer weergeven. Probeer het zo eens, en laat dan een vakje leeg. Dan geeft hij bv. fout nummer 111. Dan kan je makkelijk bij foutafhandeling dit zetten:
Nog een andere optie dat je in het begin van het programma kan toepassen is dit:
Zo ga je te werk:
[+] Eerst natuurlijk al je variabelen declareren, en daaronder begin je
Code: Selecteer alles
Dim XXX As Integer
Dim YYY As Integer
On Error GoTo foutafhandeling
[+] Dan schrijf je je programma uit, en dan schrijf je tussen de laatste regel van je eigenlijk programma en "End Sub" dit:
Code: Selecteer alles
uitkomst.Text = (prijs * aantal) + (prijs * aantal / 100 * winst)
Exit Sub 'Het programma zal hier stoppen als er geen fout voorkomt
foutafhandeling: 'hiernaar zal verwezen worden als er een fout voorkomt
Msgbox "Er is een fout opgtreden. Nummer " & Err.Number,,"Fout"
Exit Sub
Ik kom nog even terug op die Err.Number, daar zal hij het foutnummer weergeven. Probeer het zo eens, en laat dan een vakje leeg. Dan geeft hij bv. fout nummer 111. Dan kan je makkelijk bij foutafhandeling dit zetten:
Code: Selecteer alles
foutafhandeling:
If Err.Number = 111 Then
Msgbox "Vul al de vakjes in aub.",,"Opgelet!"
Else
Msgbox "Er is een fout opgtreden. Nummer " & Err.Number,,"Fout"
End If
Nog een andere optie dat je in het begin van het programma kan toepassen is dit:
Code: Selecteer alles
If Textbox1.Value = "" Then
Msgbox "Vul het tekstvak in aub.",,"Opgelet"
End If
als ik de variabelen decladeer of zoiets dan krijg ik een foutmelding als ik het programma wil laten lopen; "invalid outside procedure"
1/Mark: Werk je met VB.net of VB 6?
2/Post eens de ganse code, hoe lang die ook is.
2/Post eens de ganse code, hoe lang die ook is.
"We are the Borg. Lower your shields and surrender your ships. We will add your biological and technological distinctiveness to our own. Your culture will adapt to service us. Resistance is futile."
vb 6, maar het is opgelost, ik heb eens geprobeert wat lukske had gezegt, en het werkt, dus dat is voorlopig genoeg, ik ben aan een boek bezig met oefeningen en daar zat ik wat vast.
toch bedankt voor alle aangeboden hulp.
toch bedankt voor alle aangeboden hulp.