Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Nach Eingabe neuer Daten automatisch Aktualisierungsabfrage aufrufen

Begonnen von harvey186, August 23, 2010, 19:54:50

⏪ vorheriges - nächstes ⏩

harvey186

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

MzKlMu

Hallo,
warum bindest Du das Formular nicht einfach an die Tabelle?
Dann geht alles automatisch.
Die berechneten Werte zu speichern ist eh nicht erforderlich.
Gruß Klaus

database

#2
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...)"

harvey186

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 ??

MzKlMu

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

harvey186

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 ??

MzKlMu

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

harvey186


harvey186

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 ??

MzKlMu

Hallo,
wieso willst Du jetzt doch speichern?
Bei meinem Vorschlag wird nicht gespeichert, eine Auswahlabfrage kann nicht speichern.
Gruß Klaus

harvey186

#10
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

MzKlMu

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

harvey186

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 ??

MzKlMu

Hallo,
ZitatUnd nun muß ich meine Berichte mit dieser Abfrage machen, oder ??
Jawohl, jetzt hast Du es kapiert. ;D
Gruß Klaus

harvey186

Alles klar,

Danke für die Hilfe und die Geduld. ::)

Grüße,
Harvey