Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: MaxP am Dezember 17, 2024, 11:21:08

Titel: Daten im Endlosformular aktualisieren
Beitrag von: MaxP am Dezember 17, 2024, 11:21:08
Hallo zusammen,

nachdem ich nun schon vieles auprobiert habe und jedesmal gescheitert bin, bitte ich einmal um einen Tipp von Euch, wie folgendes am einfachsten zu realisieren ist.

Ich habe ein Ufo mit Datensätzen einer nach Proj_ID gefilterten Abfrage, die auf Tab1 u. Tab2 basiert. Diese sind über eine ID 1:1 verknüpft und enthält auch berechnete Felder und sowie Domwert.

Es soll der Wert 1StAnz (num.) aus Tab1 in das Feld 2StAnz der Tab2 übertragen werden.
Es soll die Anzahl des Werts 1Art (num.) aus Tab1 in das Feld 2WoAnz übertragen werden.
Es soll die Summe des Werts 1Grösse (num.) aus Tab1 in das Feld 2GröGes übertragen werden.
Die Werte müssen im Ufo auch multipliziert und addiert werden. Ebenso wird die Summe eines Werts aller Datensätze benötigt.

Ich habe es mit CurrentDb.Execute "Update ... versucht, funktioniert bei mir aber nicht.

Gruß
Max

Titel: Re: Daten im Endlosformular aktualisieren
Beitrag von: PhilS am Dezember 17, 2024, 11:31:27
Zitat von: MaxP am Dezember 17, 2024, 11:21:08Ich habe es mit CurrentDb.Execute "Update ... versucht, funktioniert bei mir aber nicht.
"Funktioniert nicht" ist eine Problembeschreibung, die wenig Ansatzpunkte zur Hilfestellung bietet.

Ansonsten scheint dein Vorhaben zu sein, berechnete Werte zu speichern. - Dafür sollte man einen guten Grund haben, weil es meistens sinnvoller ist, berechnete Werte in einer Abfrage zu berechnen anstatt sie zu speichern.
Titel: Re: Daten im Endlosformular aktualisieren
Beitrag von: MaxP am Dezember 17, 2024, 11:39:53
Zitat von: PhilS am Dezember 17, 2024, 11:31:27Ansonsten scheint dein Vorhaben zu sein, berechnete Werte zu speichern.

Nein, das will ich eben nicht. Ich will die "Mengenangabe" aus Tab1 nach Tab2 als Vorgabe speichern, um sie je nach Berechnungsart ggf. zu überschreiben. Sonst könnte ich ja direkt den Wert aus Tab1 übernehmen.
Titel: Re: Daten im Endlosformular aktualisieren
Beitrag von: PhilS am Dezember 17, 2024, 12:22:46
Zitat von: MaxP am Dezember 17, 2024, 11:39:53Ich will die "Mengenangabe" aus Tab1 nach Tab2 als Vorgabe speichern, um sie je nach Berechnungsart ggf. zu überschreiben.
Das wäre eine begründete Ausnahme.

Dein "Funktioniert nicht"-Problem wird damit allerdings nicht klarer.
Titel: Re: Daten im Endlosformular aktualisieren
Beitrag von: MaxP am Dezember 17, 2024, 12:37:49
Nachdem ich die Funktion CurrentDb.Execute "Update ... erfolglos probiert hatte, habe ich recherchiert, dass die Funktion bei Abfragen mit mehreren Tabellen und Domainfunktionen nicht funktioniert. Mit einer Tab hätte es theroretisch funktioniert, half mir bei meinem Vorhaben nicht weiter.
Titel: Re: Daten im Endlosformular aktualisieren
Beitrag von: MzKlMu am Dezember 17, 2024, 12:57:44
Hallo,
ZitatFunktion CurrentDb.Execute "Update ... erfolglos probiert hatte,
Was soll man mit einer solchen Aussage anfangen ?
Die Punkte hinter "Update" sind auch ziemlich sinnlos, weil nämlich das was nach Update kommt wahrscheinlich der entscheidente Teil ist.
Zitathabe ich recherchiert, dass die Funktion bei Abfragen mit mehreren Tabellen und Domainfunktionen nicht funktioniert.
Diese Aussage dürfte so pauschal auch nicht zutreffend sein.

Deine Anliegen habe ich allerdings auch nicht so recht verstanden.
Titel: Re: Daten im Endlosformular aktualisieren
Beitrag von: MaxP am Dezember 17, 2024, 18:50:52
Hallo,

ich habe nun folgenden Code, der jedoch mit der Fehlermeldung "Laufzeitfehler 3061: 1 Parameter wurde erwartet, ..." quittiert wird.

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim sql As String

    Set db = CurrentDb()
    sql = "SELECT * FROM qry_bwk"   'meine Abfrage bestehend aus 2 verknüpften Tabellen (1:1)
    Set rs = db.OpenRecordset(sql)   'diese Zeile wird beim Debuggen markiert

    If Not rs.EOF Then
        rs.MoveFirst

        Do While Not rs.EOF
            rs.Edit
            rs!bwk_Anz = rs!NE_Anz   'beide Felder in o.g. Abfrage entahlten
            rs.Update
            rs.MoveNext
        Loop
    End If

    rs.Close
    Set rs = Nothing
    Set db = Nothing

Was habe ich falsch gemacht?

Gruß
Max
Titel: Re: Daten im Endlosformular aktualisieren
Beitrag von: PhilS am Dezember 17, 2024, 18:59:30
Zitat von: MaxP am Dezember 17, 2024, 18:50:52Fehlermeldung "Laufzeitfehler 3061: 1 Parameter wurde erwartet, ..."
Das deutet auf einen Fehler in der Abfrage hin. Eine der in der Abfrage genannten Spalten wird nicht gefunden.
Öffne mal deine Abfrage durch Doppelklick in der Oberfläche. Da solltest du dann eine Rückfrage für die problematische Spalte bekommen.
Titel: Re: Daten im Endlosformular aktualisieren
Beitrag von: Beaker s.a. am Dezember 18, 2024, 12:30:38
Und wenn man gleich statt "*" eine qualifizierte Feldliste verwendet (du brauchst
hier doch nur zwei Felder), bekommt man diese Meldung auch direkt qualifiziert
bei der Codeausführung.
Titel: Re: Daten im Endlosformular aktualisieren
Beitrag von: MaxP am Dezember 20, 2024, 18:23:18
Ich habe nun in der Abfrage bei der Proj_ID das Kriterium geändert: vorher Bezug auf Feld im HFO, nun Domwert aus Tab. Jetzt bekomme ich keine Fehlermeldung mehr.

Unter einer 2. Bedingung wollte ich wiederum folgende Schleife einbauen:
      Dim bwkAnz As Single 
      Do While Not rs.EOF
            rs.Edit

            bwkAnz = DSum("NE_Anz", "qry_BWK", "NE_Art = " & Me!NE_Art) 'Zahlen gleicher Kategorie summieren FUNKTIONIERT NICHT
            rs!bwk_Anz = bwkAnz

            rs.Update
            rs.MoveNext
        Loop

Sobald DS mit gleicher Kategorie (NE_Art) vorhanden sind, sollen diese summiert werden und die Gesamtzahl in das Feld bwl_Anz eingefügt werden. Das funktioniert aber nicht, AC bleibt immer beim 1. DS hängen. Ist die Domainfunktion innerhalb der Schleife falsch?

Gruß
Max
Titel: Re: Daten im Endlosformular aktualisieren
Beitrag von: Knobbi38 am Dezember 21, 2024, 16:23:48
Hallo Max,

Summebildung für Gruppen wird doch einfach per SQL gemacht - warum so umständlich?

Schau mal hier nach, wie so etwas gemacht wird:
https://learnsql.de/blog/wie-man-sum-mit-group-by-verwendet-ein-detaillierter-leitfaden-mit-8-beispielen/ (https://learnsql.de/blog/wie-man-sum-mit-group-by-verwendet-ein-detaillierter-leitfaden-mit-8-beispielen/)