Moin,
ich brauche mal wieder eure Hilfe.
In der beigefügten Datenbank gibt es eine neue Tabelle tbl_Patrone. Wenn im Formular frm_Fuellungen die CheckBox "Patronenwechsel" aktiviert wird, soll in tbl_Patrone das Datum FuellungAm aus tbl_Fuellungen identisch gefüllt sein. Ich habe da jetzt schon mit verschiedenen Abfragen experimentiert. Leider ohne Erfolg.
Wenn das soweit funktioniert möchte ich noch einen Bericht haben, in dem die Datumswerte aus tbl_Patrone stehen und zu jedem Eintrag die Summe der Einträge aus frm_Fuellungen. Immer zwischen dem letzten Datum und dem neuen Datum.
In der Tabelle steht jetzt z. B. am 27.07.2024 und 14.10.2024 unter Bemerkung Filterwechsel. Zwischen den beiden Daten liegen 13 Einträge. Dies wäre aber nur ein Beispiel, was ich mir vorstelle.
Ich hoffe, ihr habt nicht verstanden. Könnt ihr mir sagen, wie ich beide Dinge umsetzten kann?
LG Jens
Sorry, wo ist die DB?
Holger
Sorry, hatte nicht gesehen, dass die Anlage nicht mit hochgeladen wurde.
hier mal Teil 1 für das Datum
Private Sub Patronenwechsel_AfterUpdate()
If Me.Patronenwechsel = True Then
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("tbl_Patrone", dbOpenDynaset)
rst.AddNew
rst!Wechseldatum = Me.FuellungAm ' Feld-Namen ggf. anpassen!
rst.Update
rst.Close
Set rst = Nothing
Set db = Nothing
End If
End Sub
Gruß
Holger
Hallo Holger,
das ist jetzt aber nur für das Füllen der Tabelle, wenn ich es richtig verstanden habe. Wo baue ich den Code ein? Integriert in einen der Buttons im Formular?
LG Jens
In Deiner Checkbox Eigenschaften nach_Aktualisierung
TEil zwei würde ich mal mit zwei Abfragen versuchen und dann einen Bericht auf Basis Der Abfrage 2 machen
Abfrage1
SELECT
P1.Wechseldatum AS Patronenwechsel_Ab,
(SELECT MIN(P2.Wechseldatum) FROM tbl_Patrone AS P2 WHERE P2.Wechseldatum > P1.Wechseldatum) AS Patronenwechsel_Bis
FROM tbl_Patrone AS P1
ORDER BY P1.Wechseldatum;
Abfrage2
SELECT
Patronenwechsel_Ab,
Patronenwechsel_Bis,
Nz(IIf(
[Patronenwechsel_Bis] Is Null,
DCount("*", "tbl_Fuellungen", "FuellungAm >= #" & Format([Patronenwechsel_Ab], "yyyy-mm-dd") & "#"),
DCount("*", "tbl_Fuellungen",
"FuellungAm >= #" & Format([Patronenwechsel_Ab], "yyyy-mm-dd") & "# AND FuellungAm < #" & Format([Patronenwechsel_Bis], "yyyy-mm-dd") & "#")
),0) AS AnzahlFuellungen
FROM AbfrageA1;
So sieht dann bei mir das Ergebnis aus
Holger
Zitat von: Debus am November 03, 2025, 21:37:11In Deiner Checkbox Eigenschaften nach_Aktualisierung
Hey Holger, das funktioniert. Ich habe jetzt beim Testen aber festgestellt, wenn ich in dem Formular die CheckBox aktiviert habe und die Eingaben dann speichere, dass sie für die nächste Eingabe aktiviert bleibt. Nehme ich den Haken raus, gibt es trotzdem einen Eintrag in der Tabelle. Was mache ich falsch? Geht es auch, dass die Checkbox beim Speichern wieder frei ist?
Zitat von: Debus am November 03, 2025, 21:41:15So sieht dann bei mir das Ergebnis aus
Holger
Hey Holger,
das funktioniert. Danke dafür.
Bleibt nur noch das Problem mit der markierten CheckBox.
Private blnInitialLoad As Boolean
Private Sub Form_Load()
blnInitialLoad = True
End Sub
Private Sub Form_Current()
blnInitialLoad = False
End Sub
Private Sub CheckBox_AfterUpdate()
If blnInitialLoad = False Then
If Me.CheckBox.Value = True Then
MsgBox "Checkbox neu angehakt"
End If
End If
End Sub
Wird du nur ausgeführt wenn neu gesetzt wird
Holger
wo muss der Code jetzt hin? Direkt beim Aufruf des Formulars?
Schau mal das sind drei Teile
1. Form_Load
2. Form_Current
Beide einfach in den Code der Form kopieren und das andere zur Chechbox wieder nach_Aktualisierung
irgendwas habe ich jetzt falsch gemacht. Hatte Teil 1 und 2 direkt in das Makro für das Formular kopiert und bekomme nun beim Aufruf die Fehlermeldung im Anhang.
Rechner sind aus. Sorry. Wenn keiner mehr was schreibt kann ich es morgen gerne mal was hochladen
Holger
Hallo,
ZitatHatte Teil 1 und 2 direkt in das Makro für das Formular kopiert
Was für ein Makro ?
Man kann kein VBA Code in ein Makro kopieren. Makro und VBA Code sind bei Access 2 verschiedene Dinge und haben nichts miteinander zu tun.
Makros sind bei Access eher zu meiden.
In der txt Datei ist nun der gesamte Code aus deinem Formular
Schau es Dir einfach einmal an und füge es dort hinzu.
Holger
Hallo Holger,
du hast Recht, unter access sind Makro und VBA etwas anderes. Ich arbeite viel mit Word, da ist es eigentlich das gleiche.
Deinen Code habe ich jetzt eingebaut. Beim Test läuft der Code hier auf einen Laufzeitfehler 91 bei rst.Close:
Private Sub Patronenwechsel_AfterUpdate()
Dim db As DAO.Database
Dim rst As DAO.Recordset
If blnInitialLoad = False Then
If Me.Patronenwechsel.Value = True Then
If Me.Patronenwechsel = True Then
Set db = CurrentDb()
Set rst = db.OpenRecordset("tbl_Patrone", dbOpenDynaset)
rst.AddNew
rst!Wechseldatum = Me.FuellungAm ' Feld-Namen ggf. anpassen!
rst.Update
End If
End If
End If
rst.Close
Set rst = Nothing
Set db = Nothing
End Sub
Hast du noch eine Idee?
Hallo Holger,
ich habe deinen Code angepasst (s. Anlage).
Nun funktioniert es. Danke für deine Hilfe.
LG Jens