Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Listenfeld Mehrfachauswahl speichern?

Begonnen von trebuh, September 13, 2015, 15:43:20

⏪ vorheriges - nächstes ⏩

trebuh

Hallo,

wie kann ich die Mehrfachauswahl in einem Listenfeld zwischenspeichern (Variable), damit wenn das Formular mit dem besagten Listenfeld wieder aufgerufen wird, die Mehrfachauswahl wieder angezeigt wird?

Diese Listenfeld dient zur Auswahl (Filter) von Daten für einen Bericht. Somit wäre beim Aufruf des Listenfeldes sofort ersichtlich, das ein Filter gesetzt wurde.
Habe was über Me!MeinListenfeld.selected gelesen, aber wie  gehe ich da bei Mehrfachauswahl vor?

Gruß Hubert

DF6GL

Hallo,

z. B. :
in einem Standardmodul:

Public a() as Long

im Formular als Ereignisprozeduren für zwei Schaltflächen (ohne Errorhandling):


Private Sub btnReselect_Click()
Dim i As Long

For i = 0 To Me!lstListe1.ListCount
Me!lstListe1.Selected(i) = False
Next

For i = LBound(a) To UBound(a)
Me!lstListe1.Selected(a(i)) = True
Next

End Sub




 

Private Sub btnSave_Click()
Dim itm, i As Long
ReDim a(0)
For Each itm In Me!lstListe1.ItemsSelected
ReDim Preserve a(i)
a(i) = itm
i = i + 1
Next
End Sub


trebuh

Hallo Franz,

Danke für den Code. :)

Dachte schon, das ich um das anlegen einer extra Tabelle -  wo die Daten gespeichert werden - nicht drumherum komme.

Gruß Hubert

MaggieMay

Hi,

nun, wenn du die Auswahl auch beim nächsten Start der DB noch sehen willst, wirst du sie tatsächlich in einer Tabelle speichern müssen.
Freundliche Grüße
MaggieMay

trebuh

Hallo MaggieMay,

nein, das will ich nicht. Zumindest bis jetzt nicht.  ;)
Gruß

trebuh

Jetzt hät ich doch noch eine Frage:

Wie kann ich ein Arrey auf "Null" prüfen?
Der Code von Franz läuft einwandfrei. Problem ist jetzt nur noch, dass wenn keine Auswahl im Listenfeld stattgefunden hat, und ich klicke den Button Private Sub btnReselect_Click()
Dim i As Long

For i = 0 To Me!lstListe1.ListCount
Me!lstListe1.Selected(i) = False
Next

For i = LBound(a) To UBound(a)
Me!lstListe1.Selected(a(i)) = True
Next

End Sub


dann bekomme ich eine Fehlermeldung.
"Error 9. Index auserhalb des Bereichs".

Die Variable a ist ja sozusagen leer (oder Null). Wie kann ich das jetzt abfangen? (Mal vom abfangen der Error-Nummer abgesehen)

Gruß Hubert

MaggieMay

Hi,

was du dabei wohl bedenken solltest: ohne btnSave_Click gibt es keinen Array "a".

Mit der (nicht) vorhandenen Auswahl im Listenfeld hat das eher weniger zu tun.

Freundliche Grüße
MaggieMay

trebuh

Hallo MaggieMay,

Danke für den Hinweis. Ich seh schon, ich habe noch viel zu lernen. :D

Habe jetzt eine zusätzliche boolean-Variable eingebaut, wo ich gespeichert "ja" bzw. "Nein" abfragen kann.

Gruß
Hubert