У меня странная ошибка, когда мое поле валюты добавляет 1 доллар к каждой записи.У меня есть значения, хранящиеся в таблице, и использую поиск, чтобы получить эти значения
ReducedLunch = DLookup("[Cost]", "LunchCost", "[ID]=2")
NormalLunch = DLookup("[Cost]", "LunchCost", "[ID]=1")
Milk = DLookup("[Cost]", "LunchCost", "[ID]=4")
NoLunch = DLookup("[Cost]", "LunchCost", "[ID]=5")
Затем у меня есть некоторый код VB, чтобы записать соответствующее значение в поле базы данных ...
If (rs!TodaysLunch = "Lunch" And rs!FreeLunch = False And rs!ReducedLunch = False) Then
DailyCost = NormalLunch
rs.Edit
rs!TodaysCost = DailyCost
rs!Balance = rs!Balance - DailyCost
rs.Update
End If
Если я поставлю команду msgbox перед Endif, чтобы показать значение DailyCost, оно покажет правильное значение в этот момент, однако, когда я фактически записываю данные обратно в таблицу
DoCmd.RunSQL "INSERT INTO Lunch (StudentID, DateOfLunch, TypeOfLunch, Cost) SELECT [ID],[TodaysDate],[TodaysLunch],[TodaysCost] FROM Students"
TodaysCost добавилдополнительный долларЯ проверил и перепроверил все, но не могу найти, откуда это таинственное значение.Я попытался установить DailyCost на ноль (он определен как валюта), но он все равно записывает обратно значение + 1.
Вот мой полный код, и команда msgbox в конце находится в том месте, где добавляется 1...
Dim DailyCost As Currency
Dim ReducedLunch, NormalLunch, Milk, NoLunch As Variant
Dim rs As Recordset
Dim db As Database
DailyCost = 0
Set db = CurrentDb()
Set rs = db.OpenRecordset("SELECT * FROM Students")
ReducedLunch = DLookup("[Cost]", "LunchCost", "[ID]=2")
NormalLunch = DLookup("[Cost]", "LunchCost", "[ID]=1")
Milk = DLookup("[Cost]", "LunchCost", "[ID]=4")
NoLunch = DLookup("[Cost]", "LunchCost", "[ID]=5")
Do Until rs.EOF = True
'Check for free or reduced and get price
If (rs!TodaysLunch = "Lunch" And rs!FreeLunch = True) Then
DailyCost = 0
rs.Edit
rs!TodaysCost = DailyCost
rs!Balance = rs!Balance - DailyCost
rs.Update
End If
If (rs!TodaysLunch = "Lunch" And rs!ReducedLunch = True) Then
DailyCost = ReducedLunch
rs.Edit
rs!TodaysCost = DailyCost
rs!Balance = rs!Balance - DailyCost
rs.Update
End If
If (rs!TodaysLunch = "Lunch" And rs!FreeLunch = False And rs!ReducedLunch = False) Then
DailyCost = NormalLunch
rs.Edit
rs!TodaysCost = DailyCost
rs!Balance = rs!Balance - DailyCost
rs.Update
End If
If (rs!TodaysLunch = "Milk") Then
DailyCost = Milk
rs.Edit
rs!TodaysCost = DailyCost
rs!Balance = rs!Balance - DailyCost
rs.Update
End If
If (rs!TodaysLunch = "Lunch XtraMilk") Then
ElseIf (rs!ReducedLunch = True) Then
DailyCost = ReducedLunch + Milk * 2
ElseIf (rs!FreeLunch = True) Then
DailyCost = FreeLunch + Milk * 2
ElseIf (rs!FreeLunch = False And rs!ReducedLunch = False) Then
DailyCost = NormalLunch + Milk * 2
rs.Edit
rs!TodaysCost = DailyCost
rs!Balance = rs!Balance - DailyCost
rs.Update
End If
If (rs!TodaysLunch = "No Lunch") Then
DailyCost = 0
rs.Edit
rs!TodaysCost = DailyCost
rs!Balance = rs!Balance - DailyCost
rs.Update
End If
'Set date to today
rs.Edit
rs!TodaysDate = Date
MsgBox (rs!TodaysCost) 'Point where 1 is added
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
DoCmd.RunSQL "INSERT INTO Lunch (StudentID, DateOfLunch, TypeOfLunch, Cost) SELECT [ID],[TodaysDate],[TodaysLunch],[TodaysCost] FROM Students"