Neuigkeiten:

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

Mobiles Hauptmenü

Aktualisierung Datensatz

Begonnen von cyberchris, August 15, 2016, 12:47:29

⏪ vorheriges - nächstes ⏩

cyberchris

Hallo,

ich habe mal wieder eine für mich knifflige Problemstellung:

In einem Endlosformular werden Datensätze angezeigt.
Um Daten zu ändern muss man in ein Unterformular.

Bisher lag die Backend in einer MDB. Hier hat sind die Änderungen in dem Endlosformular unmittelbar angezeigt worden, sobald man den bearbeitenden Datensatz mit der Maus erneut angeklickt hat - egal in welchem Feld.

Wir stellen die DB jetzt auf MSSQL um. Hier ist dies leider nicht mehr so.
Ich muss in diesem Fall F9 oder "Requery ausführen.
Dies hat den nicht akzeptablen Nachteil, dass er danach an den Angang des Datensatzes springt.

Gibt es eine Möglichkeit, dass er die Änderungen im Endlosformular anzeigt und aber an der Stelle im Endlosformular bleibt?

Ich hoffe das ist soweit verständlich erklärt:-)

Viele Grüße
Christoph

PhilS

Zitat von: cyberchris am August 15, 2016, 12:47:29Wir stellen die DB jetzt auf MSSQL um. Hier ist dies leider nicht mehr so.
Ich muss in diesem Fall F9 oder "Requery ausführen.
Dies hat den nicht akzeptablen Nachteil, dass er danach an den Angang des Datensatzes springt.

Gibt es eine Möglichkeit, dass er die Änderungen im Endlosformular anzeigt und aber an der Stelle im Endlosformular bleibt?
1.) Probier mal, ob evtl. ein Refresh anstelle des Requery vielleicht auch schon ausreicht.
2.) Wenn nicht, was ich befürchte, musst du dir den jeweils aktuellen Datensatz merken und nach dem Requery wieder dorthin springen. - FAQ 4.5 Gleicher Datensatz nach Requery zeigt einen Lösungsansatz.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Josef P.

Hallo!

Falls nach einem Requery auch die Datensatzpostion im Endlosformular erhalten bleiben soll, kann man mit Win-API nachhelfen.

Beispiel: Endlosformular aktualisieren

mfg
Josef

cyberchris

Hallo,

vielen Dank.
Das hilft mir schon mal weiter.
Jedoch habe ich noch das Problem dass ich den Code nicht aufgerufen bekomme.

Das Unterformular öffne ich mit DoCmd.OpenForm...
Nach dem Schließen soll dies im Endlosformular ausgeführt werden. Jedoch macht der das z. B. bei "Form_GotFocus()" nicht.

Wo muss ich das einbauen, damit er das immer ausführt, wenn das Unterformular geschlossen wird.

Gruß Christoph

Beaker s.a.

Hallo Christoph,
Beim Schliessen eines Forms treten die folgenden Ereignisse ein:
Unload → Deactivate → Close
Such dir eins aus.
gruss ekkehard
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)

MaggieMay

Hallo,
Zitat von: cyberchris am August 15, 2016, 16:58:09Das Unterformular öffne ich mit DoCmd.OpenForm...
ein Unterformular ist dem Sprachgebrauch nach ein Formular, das in ein anderes (-> Haupt-) Formular eingebettet wurde.

ZitatNach dem Schließen soll dies im Endlosformular ausgeführt werden. Jedoch macht der das z. B. bei "Form_GotFocus()" nicht.
Aktionen die beim Schließen eines Formulars stattfinden sollen, sind in dessen Close-Ereignis gut aufgehoben.

Freundliche Grüße
MaggieMay

cyberchris

Guten morgen,

Ok dann wird ein weiteres formular geöffnet;  kein unterformular.

Wenn ich das einbaue kommt die Meldung dass das formular nicht mehr existiert.
Wie spreche ich das endlosformular an?

Danke & Gruß
Christoph

Beaker s.a.

Hallo Christoph,
Das Fehlen von weiteren Antworten liegt wohl daran, dass keiner dein Problem
so richtig verstanden hat. Ich vermute es liegt an Begrifflichkeiten.
Versuche es noch einmal zu beschreiben, mit folgenden Begriffen.
Erst mal wichtig, ein UFo besteht immer aus zwei Komponenten:
1. Einem Rahmen/Container. Das ist das eigentliche Steuerelement, was über Me!NameDesContainers angesprochen wird:
2. Dem Formular, das in o.a. Container einbettet wird. Das ist ein ganz normales
Formular, das auch links im Navigationsbereich angezeigt wird.

Ein UFo lässt sich IMO auf 2 verschiedene Arten öffnen/schliessen:
1. Der Name des Formulars wird in den Eigenschaften des Containers fest hinterlegt.
Dann wird das UFo zusammen (wenn auch zuerst) mit dem HFo geöffnet/geschlossen.
2. Du weist der Eigenschaft des Containers das Formular erst zu Laufzeit zu
Me!NameDesContainers.SourceObject = "NameDesFormulars"
Dann wird das UFo zu diesem Zeitpunkt geöffnet, sprich angezeigt.
Zum Schliessen würde der Eigenschaft .SourceObject ein leerer String ("") zugewiesen.

Ich hoffe, dass dir dies hilft, dein Problem besser zu beschreiben.
gruss ekkehard
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)

MaggieMay

Hallo,
Zitat von: cyberchris am August 16, 2016, 07:30:11
Wenn ich das einbaue kommt die Meldung dass das formular nicht mehr existiert.
wo bitte baust du was ein?!

Zeige bitte den VBA-Code dazu (-> vollständige Ereignisprozeduren), dann können wir evtl. nachvollziehen, wie du da vorgehst.
Freundliche Grüße
MaggieMay

cyberchris

Hallo,

@ekkehard: ich hatte doch geschrieben, dass es sich nicht um ein Unterformuar handelt, wie zuerst fälschlicherweise geschrieben.

Über ein Button rufe ich in einem Endlosformular ein weiteres Formular auf in dem Inhalte geändert werden können und beim Schließen des Formulars gespeichert werden.
Bisher wurden diese Änderungen gleich darauf im Endlosformular aktualisiert angezeigt - spätestens dann wenn man mit dem Cursor auf den Datensatz geklickt hatte.
Mit MSSQL ist das leider nicht mehr so - warum weiß ich nicht. Hier hilft zum Beispiel optimal die Funktionstaste "F9".
--> es bleiben sogar die Datensätze an der Position stehe wo ich vorher war - wäre also optimal!
Nur wie bekomme ich die Funktion von "F9" im VBA-Code ausgeführt?

@MaggieMay: Leider habe ich den Code aktuell nicht zur Hand. Kann ich in den nächsten Tagen aber mal posten.

Ich hatte das aber in einem Sub wo die Dateien gespeichert werden und anschließend das Formular geschlossen wird.

Danke
Christoph

Beaker s.a.

Hallo Christoph,
Zitatdass es sich nicht um ein Unterformuar handelt, wie zuerst fälschlicherweise geschrieben.
Sorry, hatte ich überlesen.

"F9" entspricht einem FormularObjekt.Requery

gruss ekkehard
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)

cyberchris

Hallo,

leider entspricht "F9" nicht 100%ig "Me.Requery".

Bei Me.Requery springt er zum ersten Datensatz zurück.
Bei F9 bleibt er an der gleichen Position stehen, was ich auch benötige.

Kann man die Funktionstaste "F9" per VBA irgendwie ausführen?

Danke!
Gruß Christoph

MzKlMu

Hallo,
versuche es mal mit
ZitatMe.Recalc
Das entspricht eher F9.
Wenn das nicht klappt musst Du Requery verwenden und Dir vorher den Datensatz (dessen PS) merken und nach dem Requery diesen wieder aufrufen. Ist gängige Praxis wenn Requery erforderlich ist.
Siehe hierzu:
FAQ 4.5 Gleicher Datensatz nach Requery
Gruß Klaus

DF6GL

Hallo,

Me.Refresh

könnte auch helfen....
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

cyberchris

Hallo,

vielen dank!

Me.Recalc funktioniert einwandfrei!
In der Syntaxbeschreibung steht sogar dass dies "F9" ersetzt.

Gruß Christoph