Valhalla Legends Forums Archive | Visual Basic Programming | Problem in Flower Pricing Program

AuthorMessageTime
Dyndrilliac
I'm doing an assignment for class and for some reason I can't understant, all my prices round to the nearest dollar and tax isn't computed. My Code for the CalcPrice Function is below:[code]Public Sub CalcPrice()
If Roses = True Then
PricePlaceHolder = RosesQuant * RosesPrice
Else
PricePlaceHolder = 0
End If
If Carnations = True Then
PricePlaceHolder2 = CarnationsQuant * CarnationsPrice
Else
PricePlaceHolder2 = 0
End If
If Daisies = True Then
PricePlaceHolder3 = DaisiesQuant * DaisiesPrice
Else
PricePlaceHolder3 = 0
End If
If Tulips = True Then
PricePlaceHolder4 = TulipsQuant * TulipsPrice
Else
PricePlaceHolder4 = 0
End If
Net = PricePlaceHolder + PricePlaceHolder2 + PricePlaceHolder3 + PricePlaceHolder4
Tax = Net * 0.07
Gross = Net - Tax
End Sub[/code]

My Caller is below:[code]Private Sub cmdCalcPrice_Click()
On Error Resume Next
If chkRoses.Value = 1 Then
Roses = True
Else
Roses = False
End If
If chkCarnations.Value = 1 Then
Carnations = True
Else
Carnations = False
End If
If chkDaisies.Value = 1 Then
Daisies = True
Else
Daisies = False
End If
If chkTulips.Value = 1 Then
Tulips = True
Else
Tulips = False
End If
RosesQuant = txtRoses.Text
CarnationsQuant = txtCarnations.Text
DaisiesQuant = txtDaisies.Text
TulipsQuant = txtTulips.Text
RosesPrice = 1#
CarnationsPrice = 1.25
DaisiesPrice = 0.75
TulipsPrice = 0.5
CalcPrice
cmdMakeChange.Enabled = True
cmdCalcPrice.Enabled = False
Text1.Locked = False
txtNet.Text = Format$(Net, "Currency")
txtGross.Text = Format$(Gross, "Currency")
txtTax.Text = Format$(Tax, "Currency")
End Sub[/code]

Any help would be greatly appreciated.
December 2, 2003, 2:04 PM
Puzzle
[code]
Private Sub cmdCalcPrice_Click()
Dim Price as Currency, _
Net as Currency, _
Tax as Currency, _
Gross as Currency
RosesQuant = txtRoses.Text
CarnationsQuant = txtCarnations.Text
DaisiesQuant = txtDaisies.Text
TulipsQuant = txtTulips.Text
RosesPrice = 1#
CarnationsPrice = 1.25
DaisiesPrice = 0.75
TulipsPrice = 0.5
If chkRoses.Value = 1 Then
If RoseQuant <> 0 then
Price = (RoseQuant * RosePrice)
End If
End If
If chkCarnations.Value = 1 Then
If CarnationsQuant <> 0 then
Price = (Price + (CarnationsQuant * CarnationsPrice))
End If
End If
If chkDaisies.Value = 1 Then
If DasiesQuant <> 0 then
Price = (Price + (DasiesQuant * DasiesPrice))
End If
End If
If chkTulips.Value = 1 Then
If TulipsQuant <> 0 then
Price = (Price + (TulipsQuant * TulipsPrice))
End If
End If
cmdMakeChange.Enabled = True
cmdCalcPrice.Enabled = False
Text1.Locked = False
Net = Price
Tax = (Price * .07)
Gross = (Net + Tax)
txtNet.Text = Net
txtGross.Text = Gross
txtTax.Text = Tax
End Sub[/code]

I haven't used the currency data type very much, but I'm pretty sure that will work in this case. You don't need to call CalcPrice() becuase it just adds that much more code. My example isn't much longer than your original code.

Try to avoid using On Error Resume Next. Its a catch-all error handler but it can cause unwanted results depending on the error. Try using GoTo instead and handle the error yourself.

My code isn't very clean but it should help you. I'm at school right now and if you need any more help, I will be glad to when I get home later.

EDIT: Spelling
December 2, 2003, 3:33 PM
St0rm.iD
Should define all your variables as Singles and then round.
December 2, 2003, 9:28 PM

Search