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
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.
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.
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.
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.
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.
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
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.
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.
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
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/)