Hallo,
ich hab 2 Forms
HF und UFO
im Ufo gibt es eine PublicSub die ich gerne aus dem HF aufrufen möchte...
Die Public Sub enthält eine komplizierte Berechnung
ist das möglich
habs so versucht , funzt aber mal wieder net ;D
' Frachtpfl Gewicht in Masse_ufo berechnen in DT Erfassung übernehmen
'---------------------------------------------------------------------
If Me!ERFASSUNG_Colli.Form.Recordset.RecordCount > 0 Then
Dim rs As DAO.Recordset
Set rs = Me!ERFASSUNG_Colli.Form.RecordsetClone
Do Until rs.EOF
rs.Edit
'---------------------------------------------
If rs!DTNr = Me.LfdNr Then
Call Fpfl_Gewicht_Berechnung ' das ist die Public Sub
End If
'--------------------------------------------
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Me!ERFASSUNG_Colli.Form.Requery
End If
Danke für eure Antworten
Gruss
Bernie
Hallo,
wenn dabei nur ein berechnetes Gewicht zurückgegeben wird könnte man vieleicht besser eine Funktion
davon machen.
Dann Übergabe der Parameter beim Funktionsaufruf.
Gruß
Johann
Hallo,
außerdem dann die Funktion in ein allgemeines Modul (Datenbankfenster/Module ,nicht Klassenmodul) als Public Function verfrachten und auch im UFO aufrufen.
Hallo Zusammen,
hab jetzt schon ein bisschen probiert. Bekomm es aber nicht hin.
das wäre der Code
If Me.TU_OFFERTE > 0 Then
Dim Check_GB_Fpfl As Long ' ja
Dim Check_EP_Fpfl As Long ' ja
Dim Check_EP_Höhe As Long ' ja
Dim Check_EP_alternat As Long
Dim Check_QBM_Fpfl As Long ' ja
Dim Check_LM_Fpfl As Long ' ja
Dim Check_EW_Fpfl As Long ' ja
Dim Check_EW_60 As Long ' ja
Dim Check_EW_bis_120 As Long ' ja
Dim Check_EW_Über_120 As Long ' ja
'Gitterbox Check_GB_Fpfl ' ja
'------------------------------------------------------------------------------------------------------------
Check_GB_Fpfl = Me.Sperrigkeit_GB * Me.Anzahl_Tausch_GB
' Europaletten Check_EP_Fpfl
'------------------------------------------------------------------------------------------------------------
If Me.Anzahl_Tausch_EP > 0 Then
If Me.Höhe_Cm > 140 Then
Check_EP_Höhe = 1
Else
Check_EP_Höhe = 2
End If
If Check_EP_Höhe = 1 Then ' höher als 140
'Check_EP_alternat
Check_EP_alternat = Me.Sperrigkeit_Qbm * Me.Qbm
If Check_EP_alternat > Me.Sperrigkeit_EP_über_140 Then
Check_EP_Fpfl = Me.Sperrigkeit_EP_über_140
Else
Check_EP_Fpfl = Check_EP_alternat
End If
End If
If Check_EP_Höhe = 2 Then ' kleiner als 140
If Me.Kg > Me.Sperrigkeit_EP_bis_140 Then
Check_EP_Fpfl = Me.Kg
Else
Check_EP_Fpfl = Me.Sperrigkeit_EP_bis_140
End If
End If
End If
' QBM Check_QBM_Fpfl
'------------------------------------------------------------------------------------------------------------
Check_QBM_Fpfl = Me.Qbm * Me.Sperrigkeit_Qbm
' LM Check_LM_Fpfl
'------------------------------------------------------------------------------------------------------------
If Me.LM > Me.LM_Ab Then
Check_LM_Fpfl = Me.LM * Me.Sperrigkeit_LM
Else
Check_LM_Fpfl = 0
End If
' EW Check_EW_Fpfl Check_EW_60 Check_EW_bis_120 Check_EW_Über_120
'------------------------------------------------------------------------------------------------------------
If Me.Anzahl_Tausch_EP > 0 Or Me.Anzahl_Tausch_GB > 0 Then
Check_EW_Fpfl = 0
Else
' Check_EW_60
If Me.Länge_Cm < 60 And Me.Breite_Cm < 80 Then
If Me.Sperrigkeit_EW_bis_60x80 > 0 Then
Check_EW_Fpfl = Me.Sperrigkeit_EW_bis_60x80 * Me.Anzahl_Cll
Else
Check_EW_Fpfl = Me.Kg
End If
End If
' Check_EW_bis_120
If Me.Länge_Cm <= 120 And Me.Breite_Cm <= 80 Then
Check_EW_Fpfl = Me.Sperrigkeit_EW_bis_120x80 * Me.Anzahl_Cll
End If
' Check_EW_Über_120
If Me.Länge_Cm > 120 And Me.Breite_Cm > 80 Then
Check_EW_Fpfl = Me.Sperrigkeit_EW_über_120x80 * Me.Anzahl_Cll
End If
End If
' Frachtpflitiges Gewicht Berechnung Me.kg Check_EP_Fpfl Check_GB_Fpfl Check_EW_Fpfl Check_LM_Fpfl Check_QBM_Fpfl
'------------------------------------------------------------------------------------------------------------
Dim Vergleich_EP_GB As Long
Dim Vergleich_QBM_LM As Long
Dim Vergleich_Kg_EW As Long
Dim Check_All As Long
'Vergleich_EP_GB
If Check_EP_Fpfl > Check_GB_Fpfl Then
Vergleich_EP_GB = Check_EP_Fpfl
Else
Vergleich_EP_GB = Check_GB_Fpfl
End If
'Vergleich_QBM_LM
If Check_QBM_Fpfl > Check_LM_Fpfl Then
Vergleich_QBM_LM = Check_QBM_Fpfl
Else
Vergleich_QBM_LM = Check_LM_Fpfl
End If
'Vergleich_Kg_EW
If Me.Kg > Check_EW_Fpfl Then
Vergleich_Kg_EW = Me.Kg
Else
Vergleich_Kg_EW = Check_EW_Fpfl
End If
' Check_All
If Vergleich_EP_GB > Vergleich_QBM_LM Then
Check_All = Vergleich_EP_GB
Else
Check_All = Vergleich_QBM_LM
End If
If Check_All > Vergleich_Kg_EW Then
Me.Frachtpfl_Gewicht = Check_All
Else
Me.Frachtpfl_Gewicht = Vergleich_Kg_EW
End If
End If
Könnt Ihr mir hierbei helfen und daraufs eine Funktion basteln ?
Der Code wird im Formular ERFASSUNG_Colli_Matrix ausgeführt.
Dieses Formular basiert auf die Tabelle ERFASSUNG_Colli
Danke für eure Hilfe
Gruss
Bernie
Ähhh,
also ich nicht, muß Schnee schippen.. ;D
@ Franz Öhm also wenn du schon dabei bist, komm mal kurz nach München, kannst da gerne weiter machen ;D
Bzgl der Funktion ...
Die hat noch zeit , vll mal bei Gelegenheit.. wäre aber schon nicht schlecht wenn ich das zum Laufen bekäme
Gruss
Bernie
Hallo,
naja, kann mich beherrschen ;D
Prinzipiell:
Lagere den Code in ein Standardmodul als Public Function aus. Die "ME-Referenzen" ersetzt Du durch entspr. Argumente der Funktion. Beim Aufruf der Funktion werden diese "ME-Referenzen" als Parameter übergeben.
Das bekommst Du schon hin. ;)
@Franz ;D
Sorry ich versteh nur Bahnhof.
ZitatME-Referenzen" ersetzt Du durch entspr. Argumente der Funktion
Ok und wie sieht das dann aus ???
Sorry hab so etwas noch nie gemacht
gruss Benrie
Hallo,
nein , unter "Me-Referenzen" meinte ich die Angabe der Form-Steuerelemente,
z. B.
In einem Standardmodul:
Public Function fktMeineFunktion (a as String, b as Long) as long 'a und b sind die Funktionsargumente
Select case a
Case "Hallo"
fktMeineFunktion=b*10
Case "Bello"
fktMeineFunktion=b*20
Case Else
fktMeineFunktion=0
end Select
End Function
in einer Ereignisprozedur, wo auch immer:
Sub Form_Current()
Me!txtErgebnis =fktMeineFunktion (nz(Me!txtTextfeld1,""), nz(Me!txtZahlenfeld1,0)) 'hier werden die "Me-Referenzen" als Parameter übergeben
End Sub
Auf
Guten Morgen,
danke Franz. Das war mir leider etwas zu auwändig :-)
Zumal ich das echt nicht 100 %ig checke
Habs jetzt anderes gelöst.
Habe nun ein UFO mit mit den zu bearbeitenden Daten mit meinem HF verknüpft
Diese DS bearbeite ich mit DAO.Recordset wie u.g. und den BerechnugnsCode habe ich auch eingführt.
Das ist mit Sicherheit nicht die eleganteste Lösung, zumal ich mich ständig Frage wie sich die Geschwindigkeit
dadurch verhält.
Wieviele UFOs die auf Abfragen basieren ferträgt so ein Formurlar ? ( ps oder muss ich neue Frage in einem neuen Posting stellen )
Gruss
bernie
Hallo,
"aufwändig" ???
vermutlich ist Deine Lösung (zumindest auf Dauer) eher schwieriger zu behandeln.
Ich blicke aber ja nicht auf die Hintergründe... ;)
Die Frage nach dem "Wieviel" kann ich nicht so einfach beantworten.. Willst Du mehrere Ufo-Steuerelemente parallel platzieren, oder willst Du einem UFO-St.-El. verschiedene Formualre zuweisen?
Du kannst natürlich (und vielleicht besser, weil andere Thematik) einen neuen Thread dazu aufmachen.