PDA

Vollständige Version anzeigen : refresh-Methode


FeDi
04.10.2002, 07:15
Guten Morgen,

ich weis das dieses Thema schon oft angesprochen wurde. Habe auch mal nachgelesen im Forum, DonKarl und in der OH aber irgendwie nicht wirklich das passende gefunden.

Möchte ein Formular (alle Steuerelemente und die Form sind ungebunden) aktualisieren.
Abgefragt werden Infodaten wie z.B. DS-Anzahl einer Tabelle, Datum letzter DS mit DMAX und DCOUNT.

Beim Laden werden die Daten in Form1 mal abgefragt und auch angezeigt. Öffne ich dann ein Form2 um neue Daten in die DB einzulesen und Form2 schliesse und wieder zu Form1 zurückkehre habe ich ein me.refresh im Ereignis Bei Aktivierung eingefügt. Das funzt aber nicht.
Dann habe ich es mit me.MeinUngTxtFeld.refresh versucht. Das hat auch nichts gebracht. Auch mit recalc und requery hatte ich keinen Erfolg.

Weis hier wer einen Rat wie ich ungebundene TxtFelder aktualisiere bei Aktivierung der Form.

Danke
FeDi

MarioR
04.10.2002, 07:33
Hallo,

prüfe mal, ob das Ereignis "Bei Aktivierung" im Form1 überhaupt eintritt.

Josef Östreicher
04.10.2002, 15:46
Hallo,

wie kommen die Daten beim Laden des Form1 in die entsprechenden Felder?
Werden die Werte beim Laden per VBA zugewiesen oder steht eine feste Formel als Datenherkunft in den Feldern?
Falls die Daten zugewiesen werden, mußt Du den Zuweisevorgang nach der Eingabe neuer Datensätze (oder bei sonstigen Veränderungen) jedesmal wiederholen.

Josef Östreicher
06.10.2002, 22:42
Hallo FeDi,

hast Du noch Interesse an einer Antwort?
Melde Dich doch mal.

FeDi
07.10.2002, 08:55
Hallo zusammen,

sorry das ich hier nicht gleich eine Antwort geschrieben habe. Mir ist nämlich meine eigene Hochzeit dazwischen gekommen. Hoffe das ist jetzt entschuldigt.

So nun zur Antwort:
Also mal zu Mario: Denke die Aktivierung ist ok. Das obere Balken beim Fenster wo maximieren, minimieren und schießen wechselt von grau auf dunkelblau und denke damit ist es aktiviert.

Nun zu Josef:
Die Daten werden per VBA zugewiesen. Form1 habe ich als Start deklariert und der Code wird mal im Load_Ereignis ausgeführt.
Habe das ganze auch beim Aktivier_Ereignis eingefügt. Aber da funktioniert es auch nicht.
Und welches Ereignis sollte dann noch zutreffen???

Vielleicht habe ich noch irgendwo eine Einstellung übersehen.

Danke Euch
FeDi

Karlheinz
07.10.2002, 09:19
Hallo,

erstelle eine Public Sub z. Bsp DatenEinsetzen()in der du die die Funktionen für DS-Anzahl Datensätze usw. für Form1 ermittelst und einsetzt.
Bei Form1 beim Laden und Form2 Beim Schliessen rufst du einfach die Sub auf.

Dann müsste es klappen.

Gruß Karlheinz

<andrea>
07.10.2002, 09:26
Hallo
Ich hatte ein ähnliches problem

Ich hab das Formular per VBA geschlosen und gleich wieder geöffnet, nicht professionell, aber es ging

Gruss andrea

FeDi
07.10.2002, 09:42
Hallo KarlHeinz und Andrea,

danke für Eure Beiträge. Werde das mal mit der Public Sub probieren und Euch einen Lagebericht posten.

Auch an Andrea besten Dank für die Antwort und Deine Überlegung. Hat was an sich.

Danke Euch nochmals
FeDi

MarioR
07.10.2002, 11:33
Alles Gute wünsch ich. :)


Zum Thema:

<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">Zitat:</font><hr>Denke die Aktivierung ist ok. Das obere Balken beim Fenster wo maximieren, minimieren und schießen wechselt von grau auf dunkelblau und denke damit ist es aktiviert.<hr></blockquote>

... das muss nicht heissen, dass auch das Aktivierungsereignis anspricht.
Wenn Du z.B. ein Popup-Formular öffnest, dann wird der Code in Form1 bei DoCmd.OpenForm angehalten bis Form2 wieder geschlossen wird. Anschliessend wird der Code in Form1 mit dem nächsten Befehl fortgesetzt.

Zum Prüfen setz mal einen Haltepunkt (F9) in die Prozedur zum Aktivierungsereignis. Dann siehst Du, ob der Code tatsächlich abgearbeitet wird.

Karlheinz
07.10.2002, 21:18
@ Mario,

meinst du gebunden?
Bei ungebundenen Popup-Formularen läuft zumindest in ACC97 der Code bis zum ende der Sub/Function.

Bei Gebundenen Formularen popup ja oder nein, habe ich es noch nicht ausprobiert und wäre über eine Antwort froh (kein Austesten)

Gruß Karlheinz

MarioR
08.10.2002, 06:22
@Karlheinz
OK, war ein Fehler meinerseits. :holy:
Der Code wird natürlich nur angehalten, wenn das 2. Formular mit acDialog (so wie bei mir) geöffnet wird - Sorry.


Trotzdem hab ich meine Zweifel, dass das Aktivierungs-Ereignis eintritt. Die A97-OH sagt dazu Folgendes:
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">Zitat:</font><hr>Sie können ein Formular oder einen Bericht auf folgende Arten aktivieren: durch Öffnen des Formulars bzw. Berichts, durch Klicken auf das Formular/den Bericht oder auf ein Steuerelement, das sich in diesem befindet, oder durch Verwenden der Methode SetFocus in Visual Basic (dies ist nur für Formulare möglich). <hr></blockquote>
Mir fällt im Moment eigentlich kein Ereignis in Form1 ein, das nach Rückkehr eintritt.
Bei Fokuserhalt: geht nicht, sobald ein Steuerelement auf dem Formular ist, das den Fokus erhalten kann Beim Anzeigen: glaub ich nicht, da der DS ja nicht gewechselt wird
Tja, und das war's schon.

Eine Aktualisierung wird wohl doch nur aus Form2 möglich sein. Aber das hast Du ja schon geschrieben. :)

FeDi
08.10.2002, 07:00
Hallo und guten Morgen,

erstmals danke für die vielen Antworten. Waren sehr nützlich. Es ist als Anfänger nie leicht den richtigen Weg zufinden und man stößt sehr schnell an die Grenzen und weis manchmal bei den einfachsten Dingen nicht weiter um das gewünschte Ergebnis zu bekommen.

Also ich habe mich da mal an KarlHeinz gehalten. Public Sub und die kann ich dann beliebig aufrufen wo ich die halt brauche. Und siehe da funktioniert einwandfrei. Danke Dir.

Auch an Mario besten Dank. Zur Info. Habe das mit dem Haltepunkt probiert. Er hat zumindest das Form aktiviert und ist in dieser Prozedur auch weiter gegangen. Aber muß sagen. Habe nur die Aktivierung überprüft und nicht den Code weiterlaufen lassen. Das Prozedere von KarlHeinz erschien mir besser da ich mich wahrscheinlich mit refresh etc. unnötig gequält hätte.

Auf jeden Fall möchte ich mich bei Euch für die rege Beteiligung meines Problems bedanken.

Wünsche Euch allen einen schönen Tag.
FeDi

Markus Chemnitz
08.10.2002, 07:59
die Zeile "DoCmd.RunCommand acCmdRefresh" solltes Du Dir als gelben Zettel an den Bildschirm kleben !
Ich benutze diesen Befehl an vielen Stellen in Formularen. Sinnvoll ist auch eine "Puplic Function" mit dieser Zeile. Damit habe ich eigentlich alle Aktualisierungsprobleme in einer Mehrbenutzerumgebeung zufriedenstellend lösen können.

Markus