Er wordt niets uitgerekend!! Hoe?

  • Onderwerp starter Onderwerp starter ZZ1
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

ZZ1

Gebruiker
Lid geworden
21 jul 2009
Berichten
116
Hallo,

Ik heb een prijslijst waar ik een berekening in wil toepassen.
Deze zag er tot gister zo uit:
Code:
    BERKD400NSTSubtotaal_1.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_1.Text) * CDbl(BERKD400NSTAantal_1.Text)), 2)
    BERKD400NSTSubtotaal_2.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_2.Text) * CDbl(BERKD400NSTAantal_2.Text)), 2)
    BERKD400NSTSubtotaal_3.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_3.Text) * CDbl(BERKD400NSTAantal_3.Text)), 2)
    BERKD400NSTSubtotaal_4.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_4.Text) * CDbl(BERKD400NSTAantal_4.Text)), 2)
    BERKD400NSTSubtotaal_5.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_5.Text) * CDbl(BERKD400NSTAantal_5.Text)), 2)
    BERKD400NSTSubtotaal_6.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_6.Text) * CDbl(BERKD400NSTAantal_6.Text)), 2)
    BERKD400NSTSubtotaal_7.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_7.Text) * CDbl(BERKD400NSTAantal_7.Text)), 2)
    BERKD400NSTSubtotaal_8.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_8.Text) * CDbl(BERKD400NSTAantal_8.Text)), 2)
    BERKD400NSTSubtotaal_9.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_9.Text) * CDbl(BERKD400NSTAantal_9.Text)), 2)
    BERKD400NSTSubtotaal_10.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_10.Text) * CDbl(BERKD400NSTAantal_10.Text)), 2)
    BERKD400NSTSubtotaal_11.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_11.Text) * CDbl(BERKD400NSTAantal_11.Text)), 2)
    
    BERKD400NSTTotaal.Text = "€ " + FormatNumber((CDbl(BERKD400NSTSubtotaal_1.Text) + CDbl(BERKD400NSTSubtotaal_2.Text) + CDbl(BERKD400NSTSubtotaal_3.Text) + CDbl(BERKD400NSTSubtotaal_4.Text) + CDbl(BERKD400NSTSubtotaal_5.Text) + CDbl(BERKD400NSTSubtotaal_6.Text) + CDbl(BERKD400NSTSubtotaal_7.Text) + CDbl(BERKD400NSTSubtotaal_8.Text) + CDbl(BERKD400NSTSubtotaal_9.Text) + CDbl(BERKD400NSTSubtotaal_10.Text) _
    + CDbl(BERKD400NSTSubtotaal_11.Text)), 2)

En vandaag heb ik er iets extra toegevoegd.
Dat is dat hij de tekstboxen met Aantal erin eerst controleerd dat deze niet leeg zijn, zo ja moet hij deze veranderen naar 0.
Maar de eerste textbox veranderd hij en daarna wil hij geen subtotalen en totaal uit rekenen, wat doe ik hier fout?? Of moet het gewoon anders?
Dit is de code nu:
Code:
    If BERKD400NSTAantal_1.Value = "" Then
    BERKD400NSTAantal_1.Value = 0
Else
    Exit Sub
End If
        
    If BERKD400NSTAantal_2.Value = "" Then
    BERKD400NSTAantal_2.Value = 0
Else
    Exit Sub
End If
        
    If BERKD400NSTAantal_3.Value = "" Then
    BERKD400NSTAantal_3.Value = 0
Else
    Exit Sub
End If
        
    If BERKD400NSTAantal_4.Value = "" Then
    BERKD400NSTAantal_4.Value = 0
Else
    Exit Sub
End If
        
    If BERKD400NSTAantal_5.Value = "" Then
    BERKD400NSTAantal_5.Value = 0
Else
    Exit Sub
End If
        
    If BERKD400NSTAantal_6.Value = "" Then
    BERKD400NSTAantal_6.Value = 0
Else
    Exit Sub
End If
        
    If BERKD400NSTAantal_7.Value = "" Then
    BERKD400NSTAantal_7.Value = 0
Else
    Exit Sub
End If
        
    If BERKD400NSTAantal_8.Value = "" Then
    BERKD400NSTAantal_8.Value = 0
Else
    Exit Sub
End If
        
    If BERKD400NSTAantal_9.Value = "" Then
    BERKD400NSTAantal_9.Value = 0
Else
    Exit Sub
End If
        
    If BERKD400NSTAantal_10.Value = "" Then
    BERKD400NSTAantal_10.Value = 0
Else
    Exit Sub
End If
        
    If BERKD400NSTAantal_11.Value = "" Then
    BERKD400NSTAantal_11.Value = 0
Else
    Exit Sub
End If

    BERKD400NSTSubtotaal_1.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_1.Text) * CDbl(BERKD400NSTAantal_1.Text)), 2)
    BERKD400NSTSubtotaal_2.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_2.Text) * CDbl(BERKD400NSTAantal_2.Text)), 2)
    BERKD400NSTSubtotaal_3.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_3.Text) * CDbl(BERKD400NSTAantal_3.Text)), 2)
    BERKD400NSTSubtotaal_4.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_4.Text) * CDbl(BERKD400NSTAantal_4.Text)), 2)
    BERKD400NSTSubtotaal_5.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_5.Text) * CDbl(BERKD400NSTAantal_5.Text)), 2)
    BERKD400NSTSubtotaal_6.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_6.Text) * CDbl(BERKD400NSTAantal_6.Text)), 2)
    BERKD400NSTSubtotaal_7.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_7.Text) * CDbl(BERKD400NSTAantal_7.Text)), 2)
    BERKD400NSTSubtotaal_8.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_8.Text) * CDbl(BERKD400NSTAantal_8.Text)), 2)
    BERKD400NSTSubtotaal_9.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_9.Text) * CDbl(BERKD400NSTAantal_9.Text)), 2)
    BERKD400NSTSubtotaal_10.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_10.Text) * CDbl(BERKD400NSTAantal_10.Text)), 2)
    BERKD400NSTSubtotaal_11.Text = "€ " + FormatNumber((CDbl(BERKD400NSTPrijs_11.Text) * CDbl(BERKD400NSTAantal_11.Text)), 2)
    
    BERKD400NSTTotaal.Text = "€ " + FormatNumber((CDbl(BERKD400NSTSubtotaal_1.Text) + CDbl(BERKD400NSTSubtotaal_2.Text) + CDbl(BERKD400NSTSubtotaal_3.Text) + CDbl(BERKD400NSTSubtotaal_4.Text) + CDbl(BERKD400NSTSubtotaal_5.Text) + CDbl(BERKD400NSTSubtotaal_6.Text) + CDbl(BERKD400NSTSubtotaal_7.Text) + CDbl(BERKD400NSTSubtotaal_8.Text) + CDbl(BERKD400NSTSubtotaal_9.Text) + CDbl(BERKD400NSTSubtotaal_10.Text) _
    + CDbl(BERKD400NSTSubtotaal_11.Text)), 2)

Weet iemand een slimmere oplossing of de fout die ik hierin maak.

Alvast bedankt!!!
 
Dat is dat hij de tekstboxen met Aantal erin eerst controleerd dat deze niet leeg zijn, zo ja moet hij deze veranderen naar 0.
Maar de eerste textbox veranderd hij en daarna wil hij geen subtotalen en totaal uit rekenen, wat doe ik hier fout??
1e fout: derde persoon enkelvoud eindigt altijd op een t.
2e fout: een Textbox kan geen waarde 0 bevatten, alleen "0"
3e fout: een TextBox lees je uit en wijzig je met de eigenschap Text:
c0=TextBox1.Text
TextBox1.Text="een tekstreeks"
4e fout: de namen van de objecten zijn onnodig lang ten koste van de leesbaarheid van de code.
5e fout: gebruik een lus in plaats van een herhaling van nagenoeg identieke code

Bijv.

Code:
for j=1 to 30
  Me("BERKD400NSTSubtotaal_" [COLOR="Red"]&[/COLOR] j).Text = "€ " [COLOR="red"]&[/COLOR] Me("BERKD400NSTPrijs_" & j).Text * Me("BERKD400NSTAantal_" & j).Text
Next
 
Laatst bewerkt:
een alternatief

Hallo,
Je kunt checken of er een waarde instaat door de Functie Nz te gebruiken. Het zou erdan alsvolgt uit kunnen zien :
Code:
 CDbl([COLOR="Red"]Nz[/COLOR](BERKD400NSTAantal_1.Text)[COLOR="red"] ,0[/COLOR]), 2)
Je hebt dan helemaal geen loop nodig.

gcjvanbeek
 
Hallo gcjvanbeek,

Ik heb dit uitgestest maar ik krijg dan een foutmelding "complimeerfout verwacht: )"
Dit is de code:
Code:
  BERKD400EXS1Subtotaal_1.Text = "€ " + FormatNumber((CDbl(BERKD400EXS1Prijs_1.Text) * CDbl(Nz(BERKD400EXS1Aantal_1.Text),0) , 2)

Waar zit in fout??

alvast bedankt!!
 
Plaats van Haakje

Hallo,
Volgens mij zou het haakje als volgt geplaatst moeten worden :
Code:
BERKD400EXS1Subtotaal_1.Text = "€ " + FormatNumber((CDbl(BERKD400EXS1Prijs_1.Text) * CDbl(Nz(BERKD400EXS1Aantal_1.Text),0)[COLOR="Red"])[/COLOR] , 2)

De syntax van Nz is : Nz(Variable,Waarde bij is null) , in jouw geval is de waarde bij is nul 0.

Ik hoop dat het werkt.
gcjvanbeek
 
Hallo gcjvanbeek,

Ik krijg nog steeds dezelfde foutmelding ... Doe ik iets fout??

Snb kan jij mij eventueel nog wat extra inlichting geven over jou code?

Alvast heel erg bedankt!!
 
Ik heb mijn vorige code verwijderd en deze erin geplaatst.

Maar met loop enz. ben ik echt helemaal niet bekend, maar meer info zou ik heel graag willen.
Want heb nu een pagina dat gaat tot 75 regels.

Hoe moet ik dit toepassen zodat het werkt?

Alvast bedankt voor jou snelle reactie!!
 
Ik heb e.e.a. getest

Hallo ZZ1,
Ik heb even een klein databaseje gemaakt met een tabel met twee variabele : BERKD400NSTPrijs_1 en BERKD400NSTAantal_1. Tevens een variabele : Subtotaal.
Ik heb ook een formulier gemaakt op basis van die tabel .
Als ik de form open wordt door het veld Subtotaal gevuld via een basic routine die wordt uitgevoerd door de event OnCurrent.

De code ziet er als volgt uit :
Code:
Private Sub Form_Current()
Me.Subtotaal = FormatNumber(CDbl(Me.BERKD400NSTAantal_1) * CDbl(Nz(Me.BERKD400NSTPrijs_1, 0)), 2)
End Sub

Door het veld de juiste eigenschap (currency) te geven wordt het € voor het resultaat gezet.
Het resultaat vind je in de bijlage. Als je voor aantal 0 of geen waarde invoert is het subtotaal 0.
Ik hoop dat je hier wat aan hebt.

BDW : in welke vorm heb je de gegevens?
Kun je ze niet importeren in een tabel?
Dan ben je met bovenstaand voorbeeld direct klaar.
groet,
gcjvanbeek
 

Bijlagen

  • Forum helpmij.JPG
    Forum helpmij.JPG
    16,7 KB · Weergaven: 34
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan