Neuigkeiten:

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

Mobiles Hauptmenü

Dateneinträgen aktualisieren

Begonnen von claudia2324, Januar 10, 2013, 15:40:11

⏪ vorheriges - nächstes ⏩

claudia2324

Hallo,

ich habe eine Frage zur Aktualisierung von Dateneinträgen.

Und zwar möchte ich per Button mittels einer VBA-Prozedur alle Dateneinträge in der Datenbank aktualisieren. Manchmal ist es ja so, dass man etwas in ein Formular in eine Tabelle eingibt, dann ein anderes Formular öffnet, welches Anzeigen der selben Datensätze enthält und diese werden dann nicht angezeigt. Oder man eine weitere Prozedur vorgesehen hat, die dann nicht mit dem aktuellsten Datensätzen arbeitet.

Ich suche also einen Befehl mit dem ich am Besten alle Datensätze aktualisiere.

Access bietet mir da folgendes an zur Aktualisierung eines Formulars.

DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Forms!Formularname.Requery


Werden mit diesem Befehl nur die Datensätze aktualisiert, die mit dem Formular verknüpft sind?

Über hilfreiche Tipps wäre ich euch sehr dankbar.

VG

Claudia


69bruno

#1
Hallo Claudia,

die Datensatzherkunft des Formulars (wenn Du es als Formularereigniss anstösst), oder des Steuerelementes (wenn Du es als Steuerelementereigniss anstößt) wird neu abgefragt.

Mit dem von dir geschriebenen Ausdruck fragst Du die Datenherkunft des kompletten Formulars neu ab.

Z.B. als Ereignis "afterUpdate" in einem Steuerelement würde "Me.Requery" nur die Datensatzherkunft des Steuerelementes neu abfragen.
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If

MzKlMu

Hallo,
wenn man ein anderes Formular aus einem Formaular aufruft, muss man dafür sorgen, dass der Datensatz auch gespeichert wird, dann ist auch die Tabelle ohne Requery aktuell.
Gespeichert wird entweder wenn der Datensatz verlassen wird, oder mit einem befehl zum Speichern:
DoCmd.RunCommand acCmdSaveRecord
'erst jetzt anderes Formular aufrufen

Man könnte auch Me.Requery verwenden, das hat aber den Nachteil, dass der Datensatz verlassen wird und zum 1.DS gewechselt wird.
Da Du immer über eine Formular die Daten bearbeiten solltest, ist es nicht notwendig alle Tabellen zu aktualisieren. Zumal Tabellen auf die gerade kein Formular zugreift immer aktuell sind.

ZitatZ.B. als Ereignis "afterUpdate" in einem Steuerelement würde "Me.Requery" nur die Datensatzherkunft des Steuerelementes neu abfragen.
Kleiner Einspruch, Me.Requery fragt immer die Datenherkunft des Formualrs neu ab, egal wo es verwendet wird. Um ein Steuerlelement zu aktualisieren muss immer dessen Name angegeben werden.
Me.Steuerelementname.Requery wobei das nur bei einem Kombi oder Listenfeld Sinn macht, ein normales Feld hat keine Datenherkunft.
Berechnete Felder würde man mit Me.Recalc aktualisieren. Und ein Textfeld ist nach Aktualisierung ohnehin aktuell es heist ja auch nach Aktualisierung.
Gruß Klaus

database

Hallo,

ZitatMan könnte auch Me.Requery verwenden, das hat aber den Nachteil, dass der Datensatz verlassen wird und zum 1.DS gewechselt wird.
Wäre natürlich unlustig, wenn es nicht auch dafür eine Abhilfe gäbe  ;D

Beschrieben mit Codebeispiel ist es hier:

http://www.donkarl.com?FAQ4.5

Folgendes bitte nicht als negative Kritik zu werten ...

ZitatManchmal ist es ja so, dass man etwas in ein Formular in eine Tabelle eingibt, dann ein anderes Formular öffnet
Das lässt sich wirksam vermeiden indem man genau solche Möglichkeiten von vorn herein unterbindet.
Die Problematik entsteht genau dann, wenn ein Benutzer die Möglichkeit hat die Datenbankobjekte zu sehen bzw. diese auch zu bedienen.
Steuerst du die Formulare z.B. über eine Art Switchboard hast du die Möglichkeit immer dafür zu sorgen, dass VOR Aufruf jeglicher weiterer Formulare
das jeweils aktuelle geschlossen wird, wobei im Zuge dieses Vorgangs dessen Daten aktualisiert werden.
Als positiver Nebeneffekt zeigt sich dabei auch die Möglichkeit 'unfertige' 'Eingaben zu unterbinden, wenn das gewünscht wird.

DF6GL

Hallo,

es gäbe auch noch die Kandidaten:

Me.Dirty=false
und
Me.Refresh
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access