Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Kutsche am November 03, 2025, 20:18:15

Titel: Tabelle füllen und Bericht erstellen
Beitrag von: Kutsche am November 03, 2025, 20:18:15
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
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Debus am November 03, 2025, 20:23:51
Sorry, wo ist die DB?

Holger
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Kutsche am November 03, 2025, 20:43:39
Sorry, hatte nicht gesehen, dass die Anlage nicht mit hochgeladen wurde.
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Debus am November 03, 2025, 21:07:49
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
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Kutsche am November 03, 2025, 21:34:40
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
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Debus am November 03, 2025, 21:37:11
In Deiner Checkbox Eigenschaften nach_Aktualisierung
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Debus am November 03, 2025, 21:41:15
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
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Kutsche am November 03, 2025, 21:54:04
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?
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Kutsche am November 03, 2025, 22:05:59
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.
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Debus am November 03, 2025, 22:07:59
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


Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Kutsche am November 03, 2025, 22:14:27
wo muss der Code jetzt hin? Direkt beim Aufruf des Formulars?
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Debus am November 03, 2025, 22:18:38
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
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Kutsche am November 03, 2025, 22:33:45
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.
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Debus am November 03, 2025, 22:39:31
Rechner sind aus. Sorry. Wenn keiner mehr was schreibt kann ich es morgen gerne mal was hochladen

Holger
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: MzKlMu am November 03, 2025, 23:25:47
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.
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Debus am November 04, 2025, 07:20:08
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
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Kutsche am November 04, 2025, 16:25:20
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?
Titel: Re: Tabelle füllen und Bericht erstellen
Beitrag von: Kutsche am November 04, 2025, 17:17:17
Hallo Holger,

ich habe deinen Code angepasst (s. Anlage).

Nun funktioniert es. Danke für deine Hilfe.

LG Jens