Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Daten im Endlosformular aktualisieren

Begonnen von MaxP, Dezember 17, 2024, 11:21:08

⏪ vorheriges - nächstes ⏩

MaxP

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

Win 10 pro 64 bit, Access 2003

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MaxP

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.
Win 10 pro 64 bit, Access 2003

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MaxP

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.
Win 10 pro 64 bit, Access 2003

MzKlMu

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.
Gruß Klaus

MaxP

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
Win 10 pro 64 bit, Access 2003

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Beaker s.a.

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.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MaxP

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
Win 10 pro 64 bit, Access 2003

Knobbi38

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/