Klar kann ich machen:
mit der ersten funktion geht es los
Public Sub cboZutateneingabe_KeyUp(KeyCode As Integer, Shift As Integer)
Dim str As String, RNr As Integer
' Bestimmt welche Taste gedruckt wurde
Select Case KeyCode
'Wenn "+" Taste, dann Aktion gleich 0 (später wird Addition durchgeführt)
Case Is = vbKeyAdd
g_Aktion = ZUTAT_HINZUFUEGEN
Me.cboZutateneingabe.RowSource = "SELECT * FROM ZutatAdd WHERE BestellNr = '" & Me.com1_Bestellnummer & "'" ' Findet erlaubte zutaten für ausgewähle Speise
If Me.cboZutateneingabe.text <> "" Then
Call SpeichernAdd(Me.cboZutateneingabe.text)
Me.cboZutateneingabe.text = 1
End If
Me.Refresh
Me!cboZutateneingabe.Dropdown
Case Is = vbKeySubtract
g_Aktion = ZUTAT_WEGNEHMEN
Me!cboZutateneingabe.RowSource = "SELECT * FROM ZutatMinus WHERE PositionsNr = " & Me.PositionsNr
If Me!cboZutateneingabe.text <> "" And Me!cboZutateneingabe.text <> "-" Then
Call SpeichernMin(Left(Me.cboZutateneingabe.text, Len(Me.cboZutateneingabe.text) - 1))
End If
Me.cboZutateneingabe.text = ""
Me.cboZutateneingabe.Dropdown
End Select
End Sub
Function SpeichernAdd(StrNr As String)
Dim strNummer As String
Dim Var As Variant
Dim rs As Recordset
strNummer = Left(StrNr, Len(StrNr) - 1)
If strNummer = "" Then Exit Function
Var = strNummer
If Not GetZutatErlaubt(CStr(Var), Me!com_Bestellnummer) Then Exit Function
Call CheckPositionExistance
'Zutatenposition in db anlegen, oder wenn negativ vorhanden dann löschen
Set rs = CurrentDb.OpenRecordset("SELECT * FROM PositionZutaten WHERE PositionsNr = " & Me.PositionsNr & " AND ZutatenNr = " & strNummer & " AND PlusMinus='-'")
If Not rs.EOF Then
rs.Delete
Else
rs.AddNew
rs!RechnungsNr = Forms!Kunden.Form!Rechnungen!RechnungsNr
rs!PositionsNr = Me!PositionsNr
rs!BestellNr = Me!com_Bestellnummer
rs!ZutatenNr = strNummer
rs!PlusMinus = "+"
rs.Update
End If
rs.Close
' ungebundenes Preisfeld in Tabellenansicht neu berechnen
Me!ZutatenPreis = GetZutatenPreis(Me!PositionsNr)
Me!Zutatenliste = GetZutatenString(Me!PositionsNr, 2)
End Function
' Sicherstellen, daß Position in DB
Sub CheckPositionExistance()
Dim rs2 As Recordset
' Scherstellen, das die Position bereits in DB!
Set rs2 = CurrentDb.OpenRecordset("SELECT * FROM Positionen WHERE PositionsNr=" & Me.PositionsNr)
If rs2.EOF Then
Call DoCmd.GoToRecord(, , acNext)
Call DoCmd.GoToRecord(, , acPrevious)
End If
rs2.Close
End Sub
Function GetZutatErlaubt(ZutatenNr As Integer, SpeiseNr As String) As Boolean
If Not CurrentDb.OpenRecordset("SELECT BestellNr FROM SpeisenZutaten WHERE BestellNr= '" & SpeiseNr & "' AND ZutatenNr = " & ZutatenNr).EOF Then
GetZutatErlaubt = True
Else
GetZutatErlaubt = False
End If
End Function