Dim lastAZNR Private Sub BBearbeiten_Click() If LAuszahlungen >= 0 Then lastAZNR = LAuszahlungen DoCmd.OpenForm "FAuszahlung", acNormal, , "AZNR=" + Format(LAuszahlungen) End If End Sub Private Sub BJahrWeiter_Click() If Not IsNull(TLesejahr) Then TLesejahr = TLesejahr + 1 RefreshAll End If End Sub Private Sub BJahrZurueck_Click() If Not IsNull(TLesejahr) Then TLesejahr = TLesejahr - 1 RefreshAll End If End Sub Private Sub BKopieren_Click() Dim aznr2 As Long If Not IsNull(LAuszahlungen) And LAuszahlungen > 0 Then If MsgBox("Wollen Sie diese Variante für eine neue Variante kopieren ?", vbYesNo) = vbYes Then aznr2 = NeueAuszahlung AuszahlungKopieren LAuszahlungen, aznr2 lastAZNR = aznr2 RefreshAll End If Else MsgBox ("Bitte wählen sie die zu kopierende Auszahlung !") End If End Sub Private Sub BLöschen_Click() Dim aznr2 If Not IsNull(LAuszahlungen) And LAuszahlungen > 0 Then If MsgBox("Wollen Sie diese Auszahlung wirklich löschen ?", vbYesNo) = vbYes Then AuszahlungLöschen (LAuszahlungen) End If Else MsgBox ("Bitte wählen sie die zu löschende Auszahlung !") End If RefreshAll End Sub Private Sub BNeu_Click() Dim aznr1 As Long aznr1 = NeueAuszahlung lastAZNR = aznr1 RefreshAll End Sub Private Sub Form_Activate() RefreshAll End Sub Private Sub Form_Load() If Month(Date) < 9 Then TLesejahr = year(Date) - 1 Else TLesejahr = year(Date) End If TZahlung = 0 lastAZNR = -1 RefreshAll End Sub Private Sub LAuszahlungen_DblClick(Cancel As Integer) lastAZNR = LAuszahlungen DoCmd.OpenForm "FAuszahlung", acNormal, , "AZNR=" + Format(LAuszahlungen) End Sub Private Sub TLesejahr_Exit(Cancel As Integer) RefreshAll End Sub Function GetFilter() As String Dim filter1 filter1 = " Lesejahr =" + Format(TLesejahr) If Not IsNull(TZahlung) And TZahlung > 0 Then filter1 = filter1 + " AND TeilzahlungNr =" + TZahlung End If GetFilter = filter1 End Function Sub RefreshAll() Dim filter1 Dim query1 query1 = "SELECT TAuszahlung.AZNR, TAuszahlung.Lesejahr, IIf([TeilzahlungNr]=7,'Probevariante',IIf([TeilzahlungNr]=6,'Endauszahlung',IIf([TeilzahlungNr]=5,Getparameter('FREIERAUSZAHLUNGSTITEL'),Format([TeilzahlungNr])+' .Teilzahlung'))) AS Zahlung, TAuszahlung.Titel, TAuszahlung.Beschreibung, TAuszahlung.Datum FROM TAuszahlung " filter1 = GetFilter query1 = query1 + " WHERE " + filter1 + GetOrder 'MsgBox (query1) LAuszahlungen.RowSource = query1 LAuszahlungen.Requery LAuszahlungen.SetFocus If lastAZNR = -1 And LAuszahlungen.ListCount > 0 Then 'MsgBox (LAuszahlungen.ItemData(1)) LAuszahlungen = LAuszahlungen.ItemData(1) End If If lastAZNR >= 0 Then LAuszahlungen = lastAZNR End If End Sub Private Sub TZahlung_Change() RefreshAll End Sub Function NeueAuszahlung() As Long Dim str1 As String Dim db1 As Database Dim rs1 As Recordset Dim SNR(0 To 255) As String Dim SANR(0 To 255) As String Dim Oechsle(0 To 255) As Long Dim sortencount As Integer, oechslecount As Integer, i, j Dim aznr1 As Long 'Requery NeueAuszahlung = 0 'DoCmd.GoToRecord , , acLast 'ErgebnisfelderLoeschen str1 = InputBox("Geben Sie bitte einen Titel für die neue Variante ein: ") lj = InputBox("Geben Sie bitte das Lesejahr ein: ", , TLesejahr) If str1 <> "" And Not IsNull(str1) And Not IsNull(lj) Then DoCmd.Hourglass True Set db1 = CurrentDb Set rs1 = db1.OpenRecordset("TAuszahlung") rs1.AddNew rs1!Titel = str1 rs1!TeilzahlungNr = 7 rs1!Lesejahr = CLng(lj) rs1!Datum = Date rs1!Rebelzuschlag = 0 rs1!Grundbetrag = 0 rs1!GBZS = 0 rs1!Ausgabefaktor = 1 aznr1 = rs1!AZNR rs1.Update rs1.Close 'TTitel = str1 'TLesejahr = lj Dim omin, omax omin = DMin("Oechsle", "TLieferungen", "Year(Datum)=" + Format(lj) + " AND Oechsle>0") omax = DMax("Oechsle", "TLieferungen", "Year(Datum)=" + Format(lj) + " AND Oechsle<150") 'DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Set db1 = CurrentDb ' Sortenkürzel sicherheitshalber nochmals bereinigen Set rs1 = db1.OpenRecordset("SELECT SNR FROM TLieferungen WHERE Year(Datum)=" + Format(lj)) While Not rs1.EOF If IsNull(rs1!SNR) Or rs1!SNR = "" Then Else If UCase(rs1("SNR")) <> rs1("SNR") Then rs1.Edit rs1("SNR") = UCase(rs1("SNR")) rs1.Update End If End If rs1.MoveNext Wend rs1.Close ' Sorten einlesen sortencount = 0 Set rs1 = db1.OpenRecordset("SELECT DISTINCT SNR FROM TLieferungen WHERE Year(Datum)=" + Format(lj) + " ORDER BY SNR") 'Set rs1 = db1.OpenRecordset("SELECT * FROM TSorten") While Not rs1.EOF If IsNull(rs1!SNR) Or rs1!SNR = "" Then Else SNR(sortencount) = rs1!SNR SANR(sortencount) = "" sortencount = sortencount + 1 End If rs1.MoveNext Wend rs1.Close ' Oechsle einlesen If omin > Val(GetParameter("ABWERTUNGOECHSLE")) Then omin = GetParameter("ABWERTUNGOECHSLE") End If oechslecount = 0 For i = omin - 5 To omax + 5 Oechsle(oechslecount) = i oechslecount = oechslecount + 1 Next i Set rs1 = db1.OpenRecordset("SELECT * FROM TAuszahlungSorten") For i = 0 To sortencount - 1 For j = 0 To oechslecount - 1 rs1.AddNew rs1!AZNR = aznr1 rs1!Oechsle = Oechsle(j) rs1!SNR = SNR(i) rs1!Betrag = 0 rs1!gebunden = False rs1.Update rs1.AddNew rs1!AZNR = aznr1 rs1!Oechsle = Oechsle(j) rs1!SNR = SNR(i) rs1!Betrag = 0 rs1!gebunden = True rs1.Update Next j, i rs1.Close 'Create Qualitätsstufentable for QSNR=0 / "Wein" only Set rs1 = db1.OpenRecordset("SELECT * FROM TAuszahlungSortenQualitätsstufe") For i = 0 To sortencount - 1 rs1.AddNew rs1!AZNR = aznr1 rs1!SNR = SNR(i) rs1!SANR = SANR(i) rs1!QSNR = 0 rs1!Betrag = 0 rs1.Update Next i rs1.Close 'Erweiterung der Liste um vorhandene Sortenattribute ' Sorten einlesen sortencount = 0 Set rs1 = db1.OpenRecordset("SELECT DISTINCT SNR,SANR FROM TLieferungen WHERE Year(Datum)=" + Format(lj) + " AND SANR<>NULL AND SANR<>''") While Not rs1.EOF If IsNull(rs1!SNR) Or rs1!SNR = "" Then Else SNR(sortencount) = rs1!SNR SANR(sortencount) = rs1!SANR sortencount = sortencount + 1 End If rs1.MoveNext Wend rs1.Close Set rs1 = db1.OpenRecordset("SELECT * FROM TAuszahlungSorten") For i = 0 To sortencount - 1 For j = 0 To oechslecount - 1 rs1.AddNew rs1!AZNR = aznr1 rs1!Oechsle = Oechsle(j) rs1!SNR = SNR(i) rs1!SANR = SANR(i) rs1!Betrag = 0 rs1!gebunden = False rs1.Update rs1.AddNew rs1!AZNR = aznr1 rs1!Oechsle = Oechsle(j) rs1!SNR = SNR(i) rs1!SANR = SANR(i) rs1!Betrag = 0 rs1!gebunden = True rs1.Update Next j, i rs1.Close 'Create Qualitätsstufentable for QSNR=0 / "Wein" only Set rs1 = db1.OpenRecordset("SELECT * FROM TAuszahlungSortenQualitätsstufe") For i = 0 To sortencount - 1 rs1.AddNew rs1!AZNR = aznr1 rs1!SNR = SNR(i) rs1!SANR = SANR(i) rs1!QSNR = 0 rs1!Betrag = 0 rs1.Update Next i rs1.Close 'FUnter1.Requery DoCmd.Hourglass False NeueAuszahlung = aznr1 End If End Function Function AuszahlungKopierenAlt(aznr1 As Long) As Long Dim aznr2 As Long Dim db1 As Database Dim rs1 As Recordset Dim rs2 As Recordset Dim rs3 As Recordset Dim rs4 As Recordset Dim str1 As String Dim lj As String Dim Lesejahr1 As Long str1 = InputBox("Geben Sie bitte einen Titel für die neue Variante ein: ") If str1 <> "" And Not IsNull(str1) Then Lesejahr1 = InputBox("Lesejahr: ", "Lesejahr", TLesejahr) Set db1 = CurrentDb Set rs1 = db1.OpenRecordset("SELECT * FROM TAuszahlungSorten WHERE AZNR=" + Format(aznr1)) Set rs4 = db1.OpenRecordset("SELECT * FROM TAuszahlung WHERE AZNR=" + Format(aznr1)) Set rs2 = db1.OpenRecordset("TAuszahlungSorten") Set rs3 = db1.OpenRecordset("TAuszahlung") rs3.AddNew rs3!Titel = str1 rs3!Lesejahr = Lesejahr1 rs3!Datum = rs4!Datum rs3!Grundbetrag = rs4!Grundbetrag rs3!GBZS = rs4!GBZS rs3!Ausgabefaktor = 1 rs3!TeilzahlungNr = 7 rs3!Endauszahlung = 0 rs3!RIZS = rs4!RIZS rs3!GEZS = rs4!GEZS rs3!GLZS = rs4!GLZS rs3!WEZS = rs4!WEZS rs3!REZS = rs4!REZS rs3!Abschlägeberücksichtigen = rs4!Abschlägeberücksichtigen rs3!GebundenBerücksichtigen = rs4!GebundenBerücksichtigen rs3!AufschlagVolllieferanten = rs4!AufschlagVolllieferanten rs3.Update rs3.Close aznr2 = DMax("AZNR", "TAuszahlung") While Not rs1.EOF rs2.AddNew rs2!SNR = rs1!SNR rs2!Oechsle = rs1!Oechsle rs2!Betrag = rs1!Betrag rs2!AZNR = aznr2 rs2.Update rs1.MoveNext Wend rs1.Close rs2.Close 'Requery 'DoCmd.GoToRecord , , acLast AuszahlungKopierenAlt = aznr2 End If End Function Sub AuszahlungKopieren(from_aznr As Long, to_aznr As Long) ' Kopiert die Grundwerte und Sortentabellen soweit vorhanden Dim aznr2 As Long Dim db1 As Database Dim rs_from As Recordset Dim rs_from_sorten As Recordset Dim rs_to As Recordset Dim rs_to_sorten As Recordset Dim KeineGebundenen As Boolean Dim GBZS1 As Double Dim SNR1 As Double Dim Oechlse1 As Double Dim Betrag1 As Double Set db1 = CurrentDb Set rs_to = db1.OpenRecordset("SELECT * FROM TAuszahlung WHERE AZNR=" + Format(to_aznr)) Set rs_from = db1.OpenRecordset("SELECT * FROM TAuszahlung WHERE AZNR=" + Format(from_aznr)) rs_to.Edit rs_to!Grundbetrag = rs_from!Grundbetrag rs_to!GBZS = rs_from!GBZS GBZS1 = rs_from!GBZS rs_to!Ausgabefaktor = rs_from!Ausgabefaktor rs_to!TeilzahlungNr = 7 rs_to!Endauszahlung = 0 rs_to!RIZS = rs_from!RIZS rs_to!GEZS = rs_from!GEZS rs_to!GLZS = rs_from!GLZS rs_to!WEZS = rs_from!WEZS rs_to!REZS = rs_from!REZS rs_to!Abschlägeberücksichtigen = rs_from!Abschlägeberücksichtigen rs_to!GebundenBerücksichtigen = rs_from!GebundenBerücksichtigen rs_to!AufschlagVolllieferanten = rs_from!AufschlagVolllieferanten rs_to.Update rs_to.Close rs_from.Close 'enthält Kopie Felder mit Gebunden ? If DCount("SNR", "TAuszahlungSorten", "AZNR=" + Format(from_aznr) + " AND gebunden=True") > 0 Then KeineGebundenen = False Else KeineGebundenen = True End If 'Sortentabelleninhalte kopieren soweit verfügbar Set rs_from_sorten = db1.OpenRecordset("SELECT * FROM TAuszahlungSorten WHERE AZNR=" + Format(from_aznr)) While Not rs_from_sorten.EOF If IsNull(rs_from_sorten!SANR) Then Set rs_to_sorten = db1.OpenRecordset("SELECT * FROM TAuszahlungSorten WHERE AZNR=" + Format(to_aznr) + " AND SNR='" + rs_from_sorten!SNR + "' AND Oechsle=" + Format(rs_from_sorten!Oechsle) + " AND gebunden=" + IIf(rs_from_sorten!gebunden, "true", "false") + " AND SANR=Null") Else Set rs_to_sorten = db1.OpenRecordset("SELECT * FROM TAuszahlungSorten WHERE AZNR=" + Format(to_aznr) + " AND SNR='" + rs_from_sorten!SNR + "' AND Oechsle=" + Format(rs_from_sorten!Oechsle) + " AND gebunden=" + IIf(rs_from_sorten!gebunden, "true", "false") + " AND SANR='" + Format(rs_from_sorten!SANR) + "'") End If If Not rs_to_sorten.EOF Then rs_to_sorten.Edit rs_to_sorten!Betrag = rs_from_sorten!Betrag rs_to_sorten.Update rs_to_sorten.Close End If If KeineGebundenen = True Then Set rs_to_sorten = db1.OpenRecordset("SELECT * FROM TAuszahlungSorten WHERE AZNR=" + Format(to_aznr) + " AND SNR='" + rs_from_sorten!SNR + "' AND Oechsle=" + Format(rs_from_sorten!Oechsle) + " AND gebunden=True") If Not rs_to_sorten.EOF Then rs_to_sorten.Edit rs_to_sorten!Betrag = rs_from_sorten!Betrag '+ GBZS1 rs_to_sorten!gebunden = True rs_to_sorten.Update rs_to_sorten.Close End If End If rs_from_sorten.MoveNext Wend End Sub Sub AuszahlungLöschen(aznr1 As Long) Dim db1 As Database Set db1 = CurrentDb db1.Execute ("DELETE * FROM TAuszahlungSorten WHERE AZNR=" + Format(aznr1)) db1.Execute ("DELETE * FROM TAuszahlung WHERE AZNR=" + Format(aznr1)) End Sub