In Tabelle "DT_ERFASSUNG" habe ich folgende Daten bzw Felder angelegt.
LfdNr = Autowert PK
ABG_Land = Text_feld ( ist das Abgangsland )
ABG_PLZ = Text_Feld ( ist die Abgangspostleitzahl )
EMPF_Land = Text_Feld ( ist das Empfangsland )
EMPF_Plz = Text_Feld ( Ist die Empfangsplz )
TU_ID = Zahlenfeld ( ist die Nr des Spediteurs aus den Kundenstammdaten )
Frachtpfl_Gewicht = zahlen_Feld ( Steht für das Gewicht einer Sendung )
Fracht = Zahlen_Feld ( steht für die Kosten bzw. höhe der Fracht ) hier brauch ich den Wert aus der Tabelle " Tarif_Positionen"
--------------------------------------------------------------------------------------------------------
In der Tabelle " Tarif_Positionen" sind folgende Felder angelegt
LfdNr = Autowert PK
Von_Land = Text_feld ( ist das Abgangsland )
Von_Plz = Text_Feld ( ist die Abgangspostleitzahl )
bis_Plz = Text_Feld ( ist die Abgangspostleitzahl )
nach_Land = Text_Feld ( ist das Empfangsland )
PLZ1_von = Text_Feld ( Ist die Empfangsplz )
PLZ1_Bis = Text_Feld ( Ist die Empfangsplz )
TU_ID = Zahlenfeld ( ist die Nr des Spediteurs aus den Kundenstammdaten )
Kg1_von = Zahlenfeld ( Angabe der Kilogramm-Gewicht von )
Kg1_Bis = Zahlenfeld ( Angabe der Kilogramm-Gewicht bis )
Tarif_Fix = zahlenfeld ( = der Frachtbetrag )
----------------------------------------------------------------------------------------------------
So und nun benötige ich den richtigen Tarif_Fix aus Tablle Tarif_positionen nach Fracht in die Tabelle DT_ERFASSUNG
dabei müssen folgende Kiterien erfüllt sein :
ABG_Land = Von_Land
ABG_PLZ = Werte sollte zwischen Von_Plz & bis_Plz liegen
EMPF_Land = nach_Land
EMPF_Plz = Wert sollte zwischen PLZ1_von & PLZ1_Bis liegen
TU_ID = TU_ID
Frachtpfl_Gewicht = Wert sollte zwischen Kg1_von & Kg1_Bis liegen
dann soll er den
Wert übernehmen
Fracht = Tarif_Fix
Hoffe ich hab mich nicht zu umständlich ausgedrückt.
Hab mal a bisserl rumgedoktort, krieg aber den vergleich nicht hin :-(
-----------------------------------------------------------------------
If Me!Fracht = 0 Then
On Error GoTo myFehler
Dim strSQL As String
If IsNull(Me!ABG_Land) Or IsNull(Me!ABG_Plz) Or IsNull(Me!EMPF_Land) Or IsNull(Me!EMPF_Plz) Then
Me!Fracht = 0
Exit Sub
End If
Set db = CurrentDb
strSQL = "SELECT a.LfdNr, a.Von_Land, a.Von_Plz, a.bis_Plz, a.nach_Land, a.PLZ1_von, a.PLZ1_Bis, a.TU_ID ,a.Kg1_von, a.Kg1_Bis, Tarif_Fix "
strSQL = strSQL & " FROM Tarif_Positionen AS a"
strSQL = strSQL & " WHERE a.Von_Land =" & "'" & Me!ABG_Land & "'" & " And a.Von_Plz <> a.bis_Plz '" & Me!ABG_Plz & "'"
strSQL = strSQL & " And a.nach_Land ='" & Me!EMPF_Land & "'" & " And a.PLZ1_von <> a.PLZ1_Bis '" & Me!EMPF_Plz & "'"
strSQL = strSQL & " And a.TU_ID ='" & Me!TU_ID & "'"
strSQL = strSQL & " And a.Kg1_von <> a.Kg1_Bis ='" & Me!Frachtpfl_Gewicht & "'"
Set rs = db.OpenRecordset(strSQL)
Me!Fracht = rs!Tarif_Fix
Set db = Nothing
Set rs = Nothing
Ende:
On Error Resume Next
Exit Sub
myFehler:
If Err.Number = 2113 Then
Me!Fracht = 0
End If
Resume Ende
End If
----------------------------------------------------------
naaja hoffe ihr habt ne kleine Fvorstellung was ich brauch
Danke
gruss
Bernie
Hallo,
ich nehme an, das macht Probleme:
strSQL = strSQL & " And a.Kg1_von <> a.Kg1_Bis ='" & Me!Frachtpfl_Gewicht & "'"
besser so:
strSQL = strSQL & " And " & Me!Frachtpfl_Gewicht & " between a.Kg1_von And a.Kg1_Bis "
Dito bei der PLZ, wobei da, weil Text, ein "numerisches between" nur dann geht, wenn die Datentypen tempörar in numerische werte konvertiert werden, z. B:
strSQL = strSQL & " And " & val(Me!EMPF_Plz) & " between val(a.PLZ1_von) And val(a.PLZ1_Bis )"
Hmm so ?
Geht aber auch nicht
If Me!TU_Fracht = 0 Then
On Error GoTo myFehler
Dim strSQL As String
If IsNull(Me!ABG_Land) Or IsNull(Me!ABG_Plz) Or IsNull(Me!EMPF_Land) Or IsNull(Me!EMPF_Plz) Then
Me!TU_Fracht = 0
Exit Sub
End If
Set db = CurrentDb
strSQL = "SELECT a.LfdNr, a.Von_Land, a.Von_Plz, a.bis_Plz, a.nach_Land, a.PLZ1_von, a.PLZ1_Bis, a.TU_ID ,a.Kg1_von, a.Kg1_Bis, a.Tarif_Fix"
strSQL = strSQL & " FROM TU_OFFERTE_TARIF_Positionen AS a"
strSQL = strSQL & " WHERE a.Von_Land =" & "'" & Me!ABG_Land & "'"
strSQL = strSQL & " And a.Nach_Land =" & "'" & Me!EMPF_Land & "'"
strSQL = strSQL & " And " & Val(Me!ABG_Plz) & " between val(a.Von_Plz) And val(a.bis_Plz )"
strSQL = strSQL & " And " & Val(Me!EMPF_Plz) & " between val(a.PLZ1_von) And val(a.PLZ1_Bis )"
strSQL = strSQL & " And a.TU_ID ='" & Me!TU_ID & "'"
strSQL = strSQL & " And " & Me!Frachtpfl_Gewicht & " between a.Kg1_von And a.Kg1_Bis "
Set rs = db.OpenRecordset(strSQL)
Me!TU_Fracht = rs!Tarif_Fix
Set db = Nothing
Set rs = Nothing
Ende: On Error Resume Next
Exit Sub
myFehler:
If Err.Number = 2113 Then
Me!TU_Fracht = 0
End If
Resume Ende
End If
Hallo,
und WAS geht nicht? Kein Wert geliefert? Syntxfehler? Laufzeitfehler?
Gibt es überhaupt einen Datensatz mit den angegebenen Kriterien?
Außerdem reicht:
Sub calcFracht()
If Me!TU_Fracht = 0 Then
.
strSQL = "SELECT a.Tarif_Fix "
strSQL = strSQL & " FROM TU_OFFERTE_TARIF_Positionen AS a"
.
.
.
strSQL = strSQL & " And " & Me!Frachtpfl_Gewicht & " between a.Kg1_von And a.Kg1_Bis "
Me!TU_Fracht = nz(db.OpenRecordset(strSQL,dbOpensnapshot)(0),0)
Set db = Nothing
Set rs = Nothing
End if
Ende:
Exit Sub
myFehler:
Resume Ende
End Sub
Hallo Franz,
nein er holt keinen Wert.
Ja nach diesen Kriterien gibt es einen Datensatz.
Das ist er
LfdNr TU_Offerte Tarif_Nr Tarif_Name Gültig Kg1_von Kg1_Bis Von_Land Von_Plz bis_Plz nach_Land PLZ1_von PLZ1_Bis Tarif_Fix Tarif_je_FpflKg TU_ID 266 1 11 GS National WAHR 141,00 180 DE 85622 85622 DE 87000 94999 42,30 0,00 2
|
In der anderen Tabelle ist :
ABG_LAND = DE
ABG_PLZ = 85622
EMPF_LAND = DE
EMPF_PLZ = 93449
Frachtpfl_Gewicht = 150
TU_ID = 2
TU_Fracht = 0
Somit sollte TU_Fracht = 42,30 sein...
Wenn ich diesen o.g. Code ausführe passiert gar nichts .. er mekert nicht einmal.
War der Alte denn wirklich ohne Fehler ?
Gruss
bernie
Ahhhh ich hab den Fehler gefunden. Die verdammten Gänsefüsschen waren es ;D
so funktionierts nun .
DANKE FRANZ !!!!
If Me!TU_Fracht = 0 Then
On Error GoTo myFehler
Dim strSQL As String
If IsNull(Me!ABG_Land) Or IsNull(Me!ABG_Plz) Or IsNull(Me!EMPF_Land) Or IsNull(Me!EMPF_Plz) Then
Me!TU_Fracht = 0
Exit Sub
End If
Set db = CurrentDb
strSQL = "SELECT a.LfdNr, a.Von_Land, a.Von_Plz, a.bis_Plz, a.nach_Land, a.PLZ1_von, a.PLZ1_Bis, a.TU_ID ,a.Kg1_von, a.Kg1_Bis, a.Tarif_Fix"
strSQL = strSQL & " FROM TU_OFFERTE_TARIF_Positionen AS a"
strSQL = strSQL & " WHERE a.Von_Land ='" & Me!ABG_Land & "'"
strSQL = strSQL & " And a.Nach_Land ='" & Me!EMPF_Land & "'"
strSQL = strSQL & " And " & Val(Me!ABG_Plz) & " between val(a.Von_Plz) And val(a.bis_Plz )"
strSQL = strSQL & " And " & Val(Me!EMPF_Plz) & " between val(a.PLZ1_von) And val(a.PLZ1_Bis )"
strSQL = strSQL & " And a.TU_ID =" & Me!TU_ID
strSQL = strSQL & " And " & Me!Frachtpfl_Gewicht & " between a.Kg1_von And a.Kg1_Bis "
Set rs = db.OpenRecordset(strSQL)
Me!TU_Fracht = rs!Tarif_Fix
Set db = Nothing
Set rs = Nothing
Ende:
On Error Resume Next
Exit Sub
myFehler:
If Err.Number = 2113 Then
Me!TU_Fracht = 0
End If
Resume Ende
End If