Привет народ!
Я не имею опыта работы с vba в access, потому очень надеюсь на вашу помощ.
У меня имеется главна таблица SendDaten, которая состоит из множества столбцов и 818 строк. В нее мне надо подтянуть данные из других таблиц (что я делаю при помощи функции DLookUp, которую вписываю между .Edit и .Update) и вот потом на основании данных,которые записались в мою таблицу SendDaten после .Update мне нужно написать еще один DLookUp критериями которого являются новые заполненные поля из таблицы SendDaten.
Что-то явно идет не так, поскольку критерии при наведении на них курсора отображаются, но результат функции = NULL. Что я делаю не так?
Вот код:
| Код | Function Transportkostenberechnung() 'Funktion ermittelt die Transportkosten 'Variablen der Funktion festlegen Dim Snd_land As String Dim Snd_Ort_M As String Dim snd_plz_M As Double Dim empf_land As String Dim empf_ort As String Dim empf_plz As Double Dim ldm As Double Dim brgew As Double Dim tbl_ZuordnGeb As DAO.Recordset Dim gebietsnr As Double Dim tbl_ZuordnZielreg As DAO.Recordset Dim zielreg As Double
Dim db As DAO.Database
Dim tbl_SendDaten As DAO.Recordset
Set db = CurrentDb()
Set tbl_SendDaten = db.OpenRecordset("Sendungsdat", dbOpenDynaset) Set tbl_ZuordnGeb = db.OpenRecordset("Zuordnung_Gebiet", dbOpenDynaset) Set tbl_ZuordnZielreg = db.OpenRecordset("Zuordnung_Zielregion", dbOpenDynaset)
Dim volumengewicht As Double Dim frachtpfl_gew As Double Dim frachtpfl_gew1 As Double Dim frachtpfl_gew2 As Double Dim Lademeter As Double Dim Zielregname As String Dim Gebietsnummer As Double Dim Transportmodus As String Dim LGZuschl As Double
tbl_SendDaten.MoveFirst
Do Until tbl_SendDaten.EOF = True 'Gewichte berechnen volumengewicht = tbl_SendDaten.Fields("Lademeter") * 1500 brgew = tbl_SendDaten.Fields("brgew") 'Gewichte aufrunden frachtpfl_gew1 = -100 * Int(volumengewicht / -100) frachtpfl_gew2 = -100 * Int(brgew / -100) 'Gewichtsprьfung and display If tbl_SendDaten.Fields("volumengewicht") > tbl_SendDaten.Fields("brgew") Then tbl_SendDaten.Edit tbl_SendDaten.Fields("volumengewicht") = volumengewicht tbl_SendDaten.Fields("frachtpfl_gew") = frachtpfl_gew1 If frachtpfl_gew1 < 20001 Then tbl_SendDaten.Fields("Transportmodus") = "LTL" Else tbl_SendDaten.Fields("Transportmodus") = "FTL" End If
tbl_SendDaten.Fields("gebietsnr") = DLookup("[Gebietsnummer]", "Zuordnung_Gebiet", "Land = '" & tbl_SendDaten.Fields("Empf_Land") & "' and PLZ_min <= " & Val(tbl_SendDaten.Fields("Empf_PLZ")) & " and PLZ_max >= " & Val(tbl_SendDaten.Fields("Empf_PLZ")) & "") Debug.Print DLookup("[Gebietsnummer]", "Zuordnung_Gebiet", "Land = '" & tbl_SendDaten.Fields("Empf_Land") & "' and PLZ_min <= " & Val(tbl_SendDaten.Fields("Empf_PLZ")) & " and PLZ_max >= " & Val(tbl_SendDaten.Fields("Empf_PLZ")) & "") tbl_SendDaten.Fields("zielreg") = DLookup("[Zielregion]", "Zuordnung_Zielregion", "PLZ = " & tbl_SendDaten.Fields("Snd_PLZ_M") & " and Stadt = '" & tbl_SendDaten.Fields("Snd_Ort_M") & "'") Debug.Print DLookup("[Zielregion]", "Zuordnung_Zielregion", "PLZ = " & tbl_SendDaten.Fields("Snd_PLZ_M") & " and Stadt = '" & tbl_SendDaten.Fields("Snd_Ort_M") & "'") tbl_SendDaten.Update Zielregname = tbl_SendDaten.Fields("zielreg") Gebietsnummer = tbl_SendDaten.Fields("gebietsnr") Transportmodus = tbl_SendDaten.Fields("Transportmodus") If tbl_SendDaten.Fields("Transportmodus") = "LTL" Then tbl_SendDaten.Edit tbl_SendDaten.Fields("LGZuschl") = DLookup("[Gebietszuschlag]", "Leergutzuschlдge", "Gebietsnummer = " & Gebietsnummer & " and Versandregion = '" & Zielregname & "' and Transportmodus = '" & Transportmodus & "'") Debug.Print DLookup("[Gebietszuschlag]", "Leergutzuschlдge", "Gebietsnummer = " & Gebietsnummer & " and Versandregion = '" & Zielregname & "' and Transportmodus = '" & Transportmodus & "'") tbl_SendDaten.Update Else tbl_SendDaten.Edit tbl_SendDaten.Fields("LGZuschl") = DLookup("[Gebietszuschlag]", "Leergutzuschlдge", "Gebietsnummer = " & Gebietsnummer & " and Versandregion = '" & Zielregname & "' and Transportmodus = '" & Transportmodus & "'") Debug.Print DLookup("[Gebietszuschlag]", "Leergutzuschlдge", "Gebietsnummer = " & Gebietsnummer & " and Versandregion = '" & Zielregname & "' and Transportmodus = '" & Transportmodus & "'") tbl_SendDaten.Update End If tbl_SendDaten.MoveNext
Else tbl_SendDaten.Edit tbl_SendDaten.Fields("volumengewicht") = volumengewicht tbl_SendDaten.Fields("frachtpfl_gew") = frachtpfl_gew2 If frachtpfl_gew2 < 20001 Then tbl_SendDaten.Fields("Transportmodus") = "LTL" Else tbl_SendDaten.Fields("Transportmodus") = "FTL" End If tbl_SendDaten.Fields("gebietsnr") = DLookup("[Gebietsnummer]", "Zuordnung_Gebiet", "Land = '" & tbl_SendDaten.Fields("Empf_Land") & "' and PLZ_min <= " & Val(tbl_SendDaten.Fields("Empf_PLZ")) & " and PLZ_max >= " & Val(tbl_SendDaten.Fields("Empf_PLZ")) & "") tbl_SendDaten.Fields("zielreg") = DLookup("[Zielregion]", "Zuordnung_Zielregion", "PLZ = " & tbl_SendDaten.Fields("Snd_PLZ_M") & " and Stadt = '" & tbl_SendDaten.Fields("Snd_Ort_M") & "'") tbl_SendDaten.Update Zielregname = tbl_SendDaten.Fields("zielreg") Gebietsnummer = tbl_SendDaten.Fields("gebietsnr") Transportmodus = tbl_SendDaten.Fields("Transportmodus") If tbl_SendDaten.Fields("Transportmodus") = "FTL" Then tbl_SendDaten.Edit tbl_SendDaten.Fields("LGZuschl") = DLookup("[Gebietszuschlag]", "Leergutzuschlдge", "Gebietsnummer = " & Gebietsnummer & " and Versandregion = '" & Zielregname & "' and Transportmodus = '" & Transportmodus & "'") Debug.Print DLookup("[Gebietszuschlag]", "Leergutzuschlдge", "Gebietsnummer = " & Gebietsnummer & " and Versandregion = '" & Zielregname & "' and Transportmodus = '" & Transportmodus & "'") tbl_SendDaten.Update Else tbl_SendDaten.Edit tbl_SendDaten.Fields("LGZuschl") = DLookup("[Gebietszuschlag]", "Leergutzuschlдge", "Gebietsnummer = " & Gebietsnummer & " and Versandregion = '" & Zielregname & "' and Transportmodus = '" & Transportmodus & "'") Debug.Print DLookup("[Gebietszuschlag]", "Leergutzuschlдge", "Gebietsnummer = " & Gebietsnummer & " and Versandregion = '" & Zielregname & "' and Transportmodus = '" & Transportmodus & "'") tbl_SendDaten.Update End If
End If tbl_SendDaten.MoveNext Loop End Function
|
Функция выдает значение NULL начиная со строчки номер 77 Спасибо за советы!!!
|