PDA

Vollständige Version anzeigen : Listfeld selection löschen


alfini
02.05.2011, 19:11
Hallo Forum,

folgende Situation ist vorhanden:
Ein Formular mit einem Registerelement.
Auf den einzelnen Seiten sind ungebundene Listfelder:
Listfeld Kategorie
Listfeld Kriterien
ein Textfeld.
Folgender Ablauf ist vorhanden: Wenn zu dem Reiter VorhFähigkeiten gewechselt wird, so wird im Listfeld der Eintrag Vorhanden Fähigkeiten eingestellt und markiert. Dann sollte das Listfeld Kriterien über eine SQL-Abfrage das Listfeld Kriterien mit den entsprechenden Kriterien aktualisieren. Das funktioniert leider nicht.
Wenn ich das Listfeld Kategorie anklicke dann wird das Listfeld Kriterien aktualiesiert. Ich möchte aber das das alles durch das Wechseln des Reiters automatisiert wird.
Für eure Hilfe bedanke ich mich im voraus.
gruß alfini

fraeser
03.05.2011, 07:45
Wenn es "nur" darum geht, auf das Ereignis zu reagieren, wenn der Reiter gewechselt wird, dann nimm "Bei Änderung" (Change)....(beim Registersteuerelement).

alfini
03.05.2011, 16:23
Hallo fraeser,

der Wechsel funktioniert schon. Es wird das Kombofeld ausgewählt und ein Eintrag vorgenommen. Dieser Eintrag ist selectiert. Das Listfeld sollte dann mit den entsprechenden Kriterien gefüllt werden. Das wird aber nicht gemacht. Erst wenn ich das Combofeld mit den selectierten Eintrag erneut betätige wird das Listfeld mit den Kriterien gefüllt. Dann versuche ich Kriterien nach einem Textfeld zu übertragen was funktioniert aber solange die Auswahl im Listfeld selectiert ist und die selection wieder zurückgenommen wird, so wird auch der Eintrag auch im Textfeld gelöscht.
Das sollte aber nicht sein.
Für deine Mühe bedanke ich mich im voraus.

gruß alfini

fraeser
03.05.2011, 16:26
Übergeb' doch die selektierte Zeile bzw. die ID der ersten Spalte einer public-Variable und lies diese dann für das 2. Listfeld wieder ein...(oder bau das 2. Feld gleich auf, bevor Du die Seite wechselst)...

Scorefun
03.05.2011, 17:30
Oder stoße explizit das Kombofeld-NachAktualisierung-Ereignis beim Wählen des Eintrages an...


...
call DeinKombofeld_AfterUpdate

alfini
04.05.2011, 17:07
Hallo Scorefun,

bin bisher zu keinem Ergebnis gekommen.
Anbei mein Code mit dem ich aus dem Listenfeld mehrere Einträge auswählen kann und die in ein Textfeld übertragen werden.
Nach dem Übertragen soll die Markierung im Listfeld zurüchgesetzt werden.
Nehme ich die Auswahl per mausklick zurüch so werden die Eiträge im Textfeld auch gelöscht, was nicht sein soll.
Das ist mein Problem das ich bisher nicht gelöst bekommen habe.
Gruß alfini



Private Sub lstVorhFähigk_Click()
Dim i As Variant
Dim Auswahl As String
Auswahl = ""
For i = 0 To Me!lstVorhFähigk.ListCount - 1

If Me!lstVorhFähigk.Selected(i) Then
If Auswahl <> "" Then
Auswahl = Auswahl & " " & Me!lstVorhFähigk.Column(2, i)
Else
Auswahl = Me!lstVorhFähigk.Column(2, i)
End If
End If
Next i
Me!BUFähigkeiten = Auswahl

End Sub

ebs17
04.05.2011, 17:21
Das Listfeld sollte dann mit den entsprechenden Kriterien gefüllt werden. Das wird aber nicht gemacht. Erst wenn ich das Combofeld mit den selectierten Eintrag erneut betätige wird das Listfeld mit den Kriterien gefüllt.
Die Zuweisung der neuen RowSource an das Listenfeld erfolgt auch in der Change-Ereignisprozedur des Registers?

achtelpetit
04.05.2011, 17:24
Nehme ich die Auswahl per mausklick zurüch so werden die Eiträge im Textfeld auch gelöscht
Blödes VBA, tut genau das, was man ihm sagt.

Private Sub lstVorhFähigk_Click()
...
Auswahl = "" Da liegt der Hase im Pfeffer

Ich würde in der Liste das auswählen was ich möchte (Mehrfachauswahl) und das per Schleife übertragen. Zum Übertragen sollte dann ein separater Button im Formular vorhanden sein.
So wie Du jetzt arbeitest, kannst Du ja auch ein und dasselbe Item mehrfach in das Textfeld übertragen; zumindest läßt Dein Funktionsprinzip das zu.
Und damit sind wir beim Thema aller Themen: bei der Normalisierung. Erst zerlegst Du alle VorhFähigk (was immer das sei) in hübsch atomare Felder und dann klebst Du alles wieder in ein Textfeld zusammmen.

alfini
04.05.2011, 19:31
Hallo achtelpetit,

hat auch nicht geklappt.
Es bleibt beim gleichen Verhalten.
Mit der DB werden Bewertungen erstellt.
Deshalb kann man im Textfeld mehrere Kriterien einfügen.
Diese werden dann in einer Wordvorlage ausgegeben.
Das is der Hintergrund für das Textfeld.
Gruß alfini

achtelpetit
04.05.2011, 19:36
hat auch nicht geklappt.
Was hat nicht geklappt?

Scorefun
04.05.2011, 22:01
Wenn Du nur die Auswahl des Listenfeldes löschen/zurücksetzen willst,
reicht doch ein


me!lstVorhFähigk= Null


Also zuerst alle markierten Einträge übertragen und dann zurücksetzen:


Private Sub lstVorhFähigk_Click()
Dim i As Variant
Dim Auswahl As String
Auswahl = ""
For i = 0 To Me!lstVorhFähigk.ListCount - 1

If Me!lstVorhFähigk.Selected(i) Then
If Auswahl <> "" Then
Auswahl = Auswahl & " " & Me!lstVorhFähigk.Column(2, i)
Else
Auswahl = Me!lstVorhFähigk.Column(2, i)
End If
End If
Next i
Me!BUFähigkeiten = Auswahl

Me!lstVorhFähigk= Null

End Sub

alfini
05.05.2011, 17:11
Hallo,

leider funktioniert es nicht.
Alle angeklickten Einträge bleiben selectiert.
Gruß alfini

Scorefun
06.05.2011, 09:46
Dann steht in den Eigenschaften von Deinem Listenfeld bei Mehrfachauswahl "Einzeln" !

Dabei greift

Me!lstVorhFähigk= Null

nämlich nicht

Nur wenn diese Eigenschaft auf "Erweitert" steht, klappt das.

Wenn Du nicht auf "Erweitert" umstellen willst (Mehrfachselektion nur mit strg-Taste möglich) musst Du folgenden Code anwenden, um das Listenfeld zurückzusetzen :


Dim i As Integer
For i = 0 To Me!lstVorhFähigk.ListCount - 1
Me!lstVorhFähigk.Selected(i) = False
Next

ebs17
06.05.2011, 10:45
Me!lstVorhFähigk= Null
Hat nicht ein Listenfeld mit eingestellter Mehrfachauswahl generell den Rückgabewert Null und somit den Wert Null? Dann hat eine Zuweisung von Null auch keine Auswirkung.

Scorefun
06.05.2011, 11:42
Hat nicht ein Listenfeld mit eingestellter Mehrfachauswahl generell den Rückgabewert Null und somit den Wert Null?

Das stimmt

Dann hat eine Zuweisung von Null auch keine Auswirkung.

Anscheinend doch.

Bei Eigenschaft "Erweitert" führt die Zuweisung =Null dazu, daß alle selektierten Einträge deselektiert werden (getestet)

Bei Eigenschaft "Einzeln" klappt das nicht (getestet), da hilft nur eine kleine Schleife...

siehe auch hier:
http://www.ms-office-forum.net/forum/showthread.php?t=68754

ebs17
06.05.2011, 15:19
@Ralf: Siehe da, getestet ist besser als überlegt und schlussgefolgert. Danke.