wat met lege vakken

Plaats reactie
mark

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.
Gebruikersavatar
Sasuke
Elite Poster
Elite Poster
Berichten: 4854
Lid geworden op: 13 aug 2003, 20:25
Locatie: Vlaanderen
Uitgedeelde bedankjes: 153 keer
Bedankt: 332 keer
Contacteer:

Staan je velden misschien als "mandatory" ? En zo niet , misschien moet je dit expliciet dan vermelden dat ze niet mandatory zijn ?

Grtz,

Sasuke
Who the fxxk is General Failure and why is he reading my hard disk ?
Afbeelding
CueBoy
Elite Poster
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.
mark

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.
Gebruikersavatar
Sasuke
Elite Poster
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
Who the fxxk is General Failure and why is he reading my hard disk ?
Afbeelding
CueBoy
Elite Poster
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.
Gebruikersavatar
meon
Administrator
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...
The Oddity
Elite Poster
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:

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!
mark

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.
Lukse
Premium Member
Premium Member
Berichten: 662
Lid geworden op: 28 okt 2003, 20:51

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.
CoDE
Starter
Starter
Berichten: 19
Lid geworden op: 03 maa 2004, 14:34

Dit kan je heel makkelijk oplossen door een foutafhandeling.

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
mark

als ik de variabelen decladeer of zoiets dan krijg ik een foutmelding als ik het programma wil laten lopen; "invalid outside procedure"
Gebruikersavatar
samson007
Starter Plus
Starter Plus
Berichten: 40
Lid geworden op: 01 dec 2003, 14:26

op elke plaats creeer je de variabelen ?
Gebruikersavatar
The_Borg
Elite Poster
Elite Poster
Berichten: 1759
Lid geworden op: 22 dec 2003, 20:25

1/Mark: Werk je met VB.net of VB 6?

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."
mark

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.
Plaats reactie

Terug naar “Development”