Moin,
ich habe ein Formular erstellt, mit dem der User die Daten eingeben kann. Das Formular hat einen "Speichern" Butten. Nach dem Speichern soll nun automatisch eine Aktualisierungsabfrage gestartet werden, da diverse Berechnungen erfolgen müssen.
Wo kann ich eintragen, dass die Abfrage aufgerufen wird ?
Danke
Harvey
Hallo,
warum bindest Du das Formular nicht einfach an die Tabelle?
Dann geht alles automatisch.
Die berechneten Werte zu speichern ist eh nicht erforderlich.
Hallo,
da gibt's verschiedene Wege, die zum Ziel führen.
Ist dein Formular ein ungebundenes Formular oder beruhrt es auf einer Tabelle oder Abfrage?
Wenn es ein gebundenes Formular ist, was sehr zu empfehlen wäre, kannst du die Berechnungen im Formular während der Dateneingabe erledigen aber die Ergebnisse der Berechnung brauchst du nicht zu speichern, diese werden z.B. für die Berichtserstellung erneut ausgeführt.
Bei ungebundenen Formularen ist der Vorgang ein wenig umfangreicher, da die benötigten Daten erst mal aus dem Formular gelesen werden,
die Berechnungen durchgeführt, in dias Formular eingetragen und dann die aktualisierten Daten in die Tabelle(n) zurückgeschrieben werden - wiederum ohne die Berchnungsdaten.
Dieses kann mit Access-Bordmitteln oder wahlweise mit VBA erledigt werden.
Wenn du eine Abfrage bereits erstellt hast, welche die Inhalte der Formularfelder auslesen kann, dann KÖNNTEST du die Abfrage per VBA-Code ausführen lassen indem du in das Ereignis 'Beim Klicken' des Speicher-Buttons den folgenden Befehl einträgst:
DoCmd.OpenQuery "DeineAbfrage"
Damit wird dann die vordefinierte gespeicherte Abfrage ausgeführt.
Eleganter wäre es natürlich die Sache unsichtbar per SQL Befehl zu erledigen...
DoCmd.RunSQL ("UPDATE DeineTabelle SET Feld = NeuerWert .... WHERE ID = DeinAktuellerDatensatz)
oder noch professioneller per DAO
Dim strSQL as String
Dim db as DAO.Database
Set db = CurrentDB
strSQL = "UPDATE DeineTabelle SET Feld = NeuerWert .... WHERE ID =" & DeineAktuelleDatensatzID
db.Execute strSQL
ABER
Wobei sich mir nun folgende Frqge stellt - warum in aller Welt brauchst du ein Aktualisierungsabfrage beim Dateneingeben?
Sollte das nicht eher eine Anfügeabfrage sein um neue Daten in die Tabelle einzutragen?
"INSERT INTO DeineTabelle (Feld1, Feld2, Feld3, Feldx....) VALUES (Wert1, Wert2, Wert3, Wertx...)"
mhm, also ganz von vorne. Ich habe eine Tabelle erstellt und anschließend dafür ein Eingabeformular. Ich gehe nun also davon aus, dass es mein Formular ein gebundenes Formular ist. In das Formular werden z.B. Start-Kilometer und Uhrzeit und End-Kilometer und Uhrzeit eingegeben, Datum und und und. Über die Aktualisierungsabfrage errechne ich die Differenzen zwischen den Start und End Eingaben und aus dem Datum die Kalenderwoche und schreibe diese Summen und so in neue Felder in der Tabelle.
Ist es nun eine Aktualisierungsabfrage oder Anfügeabfrage ??
Oder kann ich die Berechnungsformeln auch in die Ursprungstabelle eingeben ?
MzKlMu <-- wie kann ich das Formular einbinden ? oder geht das in meinem Fall nicht ??
Hallo,
es ist völlig überflüssig, die berechneten Werte in der Tabelle zu speichern. Immer wenn die Werte gebraucht werden, werden die berechnet. Es ist nicht üblich Berechnungen in Datenbanken zu speichern.
Du brauchst also weder Aktualisierungsabfrage noch Anfügeabfrage.
Und eine Aktualisierungsabfrage für die Berechnungen ist auch nicht notwendig. Du kannst entweder direkt in den Formularfeldern rechnen, oder in einer Abfrage (Auswahlabfrage !!) an die das Formular gebaunden wird.
aber, ich will dann später Berichte und andere Abfragen erstellen in denen ich die Berechnungen ausgeben will. Wenn die berechnungen nicht in der Tabelle stehen, dann müßte ich bei jederm Bericht wieder die Berechnungen einbauen und das wäre ja auch doof, oder ??
Hallo,
Wenn die berechnungen nicht in der Tabelle stehen, dann müßte ich bei jederm Bericht wieder die Berechnungen einbauen und das wäre ja auch doof, oder ??Nein, so ist es richtig. So wird es in Datenbanken gemacht.
Wenn Du die Berechnungen in einer Auswahlabfrage machst, kannst Du diese Abfrage für den Bericht verwenden.
Ansonsten wird im Bericht wieder gerechnet.
Nur dann bist Du sicher, dass die Werte stimmen, weill immer auf die Originalberechnungsgrundlagen zugegriffen wird.
Also bleibe auf dem sauberen Weg und speichere nicht.
Access erfordert eine völlig andere Denkweise als Excel.
OK, Danke, dann werd ich das mal so probieren.
Zitat von: MzKlMu am August 23, 2010, 20:54:35
Und eine Aktualisierungsabfrage für die Berechnungen ist auch nicht notwendig. Du kannst entweder direkt in den Formularfeldern rechnen, oder in einer Abfrage (Auswahlabfrage !!) an die das Formular gebaunden wird.
Ich habe jetzt in das Formular die Rechenfelder untergebracht. Aber der Ergebnisse werden nicht gespeichert ??? Ich hatte dich aber so verstanden, dass das der Fall sein soll.
Muß ich noch dem Formularfeld noch irgendwas mitgeben ??
Hallo,
wieso willst Du jetzt doch speichern?
Bei meinem Vorschlag wird nicht gespeichert, eine Auswahlabfrage kann nicht speichern.
Ich hatte dein Beispiel mit den Zeiten gesehen, dass in der Abfrage das Feld Dauer gespeichert ist. Und deshalb dachte ich, dass ich das auch so benutzen kann.
Sorry, habe Ewigkeiten nicht mehr mit Access gearbeitet und wie die Logik ist, hab ich wohl vergessen.
Gruß,
Harvey
Hallo,
Zitatdass in der Abfrage das Feld Dauer gespeichert ist.
Nein, das feld Dauer wird nicht gespeichert. Das wird nur in der Abfrage erzeugt, nur in der Abfrage und ist ein berechnetes Feld. Immer wenn Du die Dauer brauchst, wird diese berechnet.
Ich glaub, ich hab's jetzt kapiert. Ich habe jetzt in meiner Abfrage da Daten errechnen lassen. Und nun muß ich meine Berichte mit dieser Abfrage machen, oder ??
Hallo,
ZitatUnd nun muß ich meine Berichte mit dieser Abfrage machen, oder ??
Jawohl, jetzt hast Du es kapiert. ;D
Alles klar,
Danke für die Hilfe und die Geduld. ::)
Grüße,
Harvey
Zitat von: MzKlMu am August 27, 2010, 10:11:24
Hallo,
wieso willst Du jetzt doch speichern?
Bei meinem Vorschlag wird nicht gespeichert, eine Auswahlabfrage kann nicht speichern.
Ich will aber in der tabelle speichern!!! weil ich die daten in der Tabelle haben will, was will ich mit einer unvollständigen Tabelle?
Desshalb würde ich einfach die Frage stellen: "warum nicht beide Abfragetypen miteinander kombinieren?":
Die Auswahlabfrage die die automatisierung bietet, und die Aktualisierungsabfrage, die die Daten in der Tabelle aktualisiert, und somit in die Tabelle schreibt?
MFG
MayorB26
Hallo,
Du kannst noch so viele Ausrufezeichen an das ich will anhängen. Die berechneten Werte haben in der Tabelle nichts verloren.
Es ist auch eine Fehlerquelle, stelle Dir vor, die beiden Abfragen werden aus irgendwelchen Gründen nicht vollständig ausgeführt (Rechner abgestürzt z.B.).
Dann musst Du dafür sorgen, dass die Abfragen nachträglich ausgeführt werden und dabei auch noch prüfen, welcher Abfrage ggf. getätigt wurde.
Ein enormer Mehraufwand. Mit einer Abfrage ist das immer aktuell, automatisch.
Zitatwas will ich mit einer unvollständigen Tabelle?
Datenbanktabellen sind immer unvollständig. Ein vollständiges Bild der Daten ergibt sich immer über Abfragen und damit verbunden die Verknüpfungen der Tabellen, Sortierungen und Berechnungen.
Ist ist auch zu bedeneken, dass in einer Datenbank im Regelfall nicht auf die Tabellen direkt zugegriffen wird, sondern immer über Abfragen. Zuverlässige Sortierungen einer Tabelle können nur über Abfragen erreicht werden. Du wirst also ohnehin eine Abfrage benötigen.
Du solltest also das Vorhaben noch mal überdenken.
Weitere Hilfe kann ich Dir nicht anbieten.
Zitat von: MayorB26 am Mai 31, 2019, 05:25:48
Ich will aber in der tabelle speichern!!! weil ich die daten in der Tabelle haben will, was will ich mit einer unvollständigen Tabelle?
Die Tabelle ist nicht unvollständig, wenn sie alle Ausgangswerte enthält, mit denen man die zusätzlichen gewünschten Werte errechnen kann.
Mir ist ansonsten nicht klar, wieso du dich hier an einen fast 10 Jahre alten Thread hängst.
Hallo,
Zitatan einen fast 10 Jahre alten Thread hängst.
ups, hatte ich gar nicht bemerkt, ich dachte das wäre noch der ursprüngliche Fragesteller. Der Kollege ist ja neu.
Habe ich vollständig übersehen.
Aber das ändert ja nichts an unseren Aussagen.