PDA

Vollständige Version anzeigen : Listenfeld aktualisieren


steftre
24.10.2003, 07:07
Guten Morgen,
auch nach langem Versuchen und suchen im Formum bin ich nicht auf die Lösung gekommen.
Ich habe ein Formular erstellt, in welchem ein Listenfeld alle Werte des Feldes "Methoden" enthält. Füge ich nun einen neuen Datensatz ein und das Feld Methoden ist ausgefüllt, soll das Listenfeld aktualisiert werden. Mit der Funktion "Requery" funktioniert das ganze leider nicht.
Nur wenn ich "Requery" für das ganze Formular anwende aktualisiert sich das Listenfeld.
Ich habe versucht den folgenden Code einzufügen, aber ohne Erfolg:

Private Sub Methode_Exit(Cancel As Integer)
Dim letzterDS As String

letzterDS = Me.Methode.Value

Forms!frm_methoden.Requery

DoCmd.FindRecord letzterDS

End Sub

Kann mir denn jemand weiterhelfen.

Jetzt schon vielen Dank

Stefan

WMS
24.10.2003, 08:04
Wenn du dem Listfeld als Datenherkunft die Tabelle hinterlegt hast,

dann kannst du mit : MeinListfeld.RowSource= "Tabellenname" ein Aktualisierung erreichen.

...sollte aber ein Sql-Query dahinter liegen, musst du diesen kopieren und für den Tabellennamen ersetzen:

MeinListfeld.RowSource= "Select ....."

Es wird dann immer aktualisiert. :confused:

Paul.Ostermeier
24.10.2003, 08:17
oder ganz plump ...


Dim aMarker As String

aMarker = Me.Bookmark
Me.Requery
Me.Bookmark = aMarker

Arne Dieckmann
24.10.2003, 08:21
Und das Requery auf das Listenfeld mit

Me!MeinListenFeld.Requery

klappt nicht?

steftre
24.10.2003, 08:24
Hi,
ich habe zuerst versucht mit der sql Variante zu arbeiten Bin aber leider nicht so fit und komme nicht darauf warum im folgenden Code ein Syntaxfehler ist.
Me.Liste11.RowSource = ("SELECT tbl_methoden.[methoden-Nr], tbl_methoden.Methode FROM tbl_methoden ORDER BY tbl_methoden.Methode;)

Die Variante mit dem Bookmark habe ich versucht, funktioniert aber nicht richtig.

Danke für die Hilfe
Gruß

Stefan

Arne Dieckmann
24.10.2003, 08:26
Versuche mal:

Me!Liste11.RowSource ="SELECT tbl_methoden.[methoden-Nr], tbl_methoden.Methode FROM tbl_methoden ORDER BY tbl_methoden.Methode;"

oder kürzer:

Me!Liste11.RowSource ="SELECT [methoden-Nr], Methode FROM tbl_methoden ORDER BY Methode;"

Carmen Kriegler
24.10.2003, 08:32
Hallo Leute,

warum eigentlich so kompliziert?
Mit Me.Refresh werden doch auch Listen- oder Kombifelder regeneriert, oder?

LG, Carmen

Arne Dieckmann
24.10.2003, 08:35
@Carmen: Das ist uns schon bewusst. Diese "Lösung" ist bloss etwas unpraktisch, da man so den zuletzt angezeigten Datensatz wieder finden muss ...

steftre
24.10.2003, 08:38
Hi,
danke erstmal für eure vielen Vorschläge.
Leider bin ich noch nicht zum Ziel gekommen.

Mit Me.Liste11.requery funktioniert es einfach nicht, bei Me.Liste11.refresh findet er die Methode nicht und die umgestellte SQL Query zeigt kein Effekt.

Deshalb habe ich die betreffende Liste und das Formular mal angehängt damit ich euch ein Bild machen könnt.

Danke schon mal

Gruß
Stefan

WMS
24.10.2003, 08:39
steftre

in deiner Anfrage schreibst du:
.....alle Werte des Feldes "Methoden"

im Code schreibst du aber:
Me!Liste11.RowSource ="SELECT tbl_methoden.[methoden-Nr], tbl_methoden.Methode FROM tbl_methoden ORDER BY tbl_methoden.Methode;"

Liegt es vielleicht daran? :confused:

Nouba
24.10.2003, 08:53
Hallo,

Arnes Vorschlag im AfterUpdate Event des Formulars sollte funktionieren.
Private Sub Form_AfterUpdate()
Me.Liste11.Requery
End Sub

WMS
24.10.2003, 09:00
Hi Stefan,

gibt's sowas auch in A97? :bawling:

steftre
24.10.2003, 09:05
Hi WMS,
ich habe die db in eine frühere Version konvertiert.

Vielleicht kommst du damit zurecht. Danke für deine / eure Mühe.

Das mit requery im after update funktioniert leider auch nicht. Entweder stehe ich gerade auf dem schlauch oder es geht wirklich nicht.

Gruß

Stefan

PS: bin kurz weg

Carmen Kriegler
24.10.2003, 09:11
Hi,

ich habe das mit deiner Datenbank ausprobiert. Requery funktioniert tatsächlich nicht.

Me.Refresh (ohne irgendwelche Zusätze oder .xxx dazwischen funktioniert tadellos), kann man entweder beim Ereignis "After Update" oder auch bei "Exit" eingeben.

LG, Carmen

steftre
24.10.2003, 09:16
Hi Carmen,
leider zeigt er bei mir an dass er die Methode oder das Datenobjekt nicht findet wenn er refresh ausführen soll.

Gruß
Stefan

WMS
24.10.2003, 09:32
Hallo Stefan,

mit der A97 Db komme ich zu dem gleichen Ergebnis wie Carmen. Also nur ein Einfügen von Me.Refresh bringt den Erfolg.

Wenn es bei dir zu diesen Fehler kommt, solltest du mal deine Verweise überprüfen, denn ich musste die DAO 3.5 einstellen. Jetzt funktioniert es. Kann aber auch am Konvertieren nach A97 liegen.

WMS
24.10.2003, 09:38
noch eine Anmerkung:
ohne Refresh wird es kaum gehen, denn wenn du mal eine neue Methode eingibst, das Feld verlässt,
danach in die Tabelle schaust, dann steht der neue Datensatz noch nicht drin. Also er kann auch nicht angezeigt werden.
Durch Refresh wird der neue Datensatz in der Tabelle auch physisch angelegt.

Carmen Kriegler
24.10.2003, 09:39
Hi Stefan,

Beim list97.mdb war .recordset.clone statt recordsetclone geschrieben, deswegen eine Fehlermeldung bei mir, wahrsch. die Konvertierung.

Das mit den Verweisen habe ich mir auch schon gedacht. Aber Stefan, wo hast du denn den Code mit Me. Refresh genau hineingeschrieben: ins Feld "methode" oder woanders hin.

Bei mir funktionierts mit beiden Versionen (Ereignis exit oder after update im Feld "Methode")

LG, Carmen

Carmen Kriegler
24.10.2003, 09:42
Hi,

Habe hier die list97.mdb mit überarbeiteten Code. Probiers mal aus..

LG, Carmen

steftre
24.10.2003, 10:31
Hi Carmen, hi WMS,

vielen vielen Dank für eure Hilfe und natürlich auch die der anderen.

Ich habe mittlerweile als Ereignisprozedur nur noch me.refresh und das funktioniert.
Vorher habe ich auf dem Schlauch gestanden und Me.Liste11.Refresh eingegeben. Das führte dann zu dem beschriebenen Fehler mit den Objekten. Aber ich dachte so wird nur das Listenfeld neu geladen, was aber nicht möglich ist, das in der Tabelle der neue DS noch nicht existiert (Danke WMS).

Danke nochmal

Gruß
Stefan