Access-o-Mania

Access-Forum => Formular => Thema gestartet von: jagger am Januar 11, 2019, 00:09:33

Titel: Listenfeld ersten Wert anzeigen (Schieberegler von Bildlaufleiste immer oben)
Beitrag von: jagger am Januar 11, 2019, 00:09:33
Hallo in die Runde,

beim Anzeigen eines Formulars lasse ich in einer Listbox
(mit einfacher Mehrfachauswahl) einen oder einige Wert(e) markieren.
Die Werte kommen aus einer Tabelle und sind die Werte der letzten Auswahl (vor dem Schließen des Formulars) in der Listbox.

Dim I As Long, RS As DAO.Recordset
  With Me!lbxKollektionen
           Set RS = CurrentDb.OpenRecordset("SELECT * FROM tab_intex_KM_Filter_code ", dbOpenSnapshot)
        For I = 0 To .ListCount - 1
          RS.FindFirst "code = " & Nz(.Column(0, I), -1)
           .Selected(I) = Not RS.NoMatch
        Next I
      RS.Close
   End With

Die Listbox zeigt 8 Zeilen an. Da es aber mehr als 8 Werte (Zeilen) gibt, hat die Listbox eine vertikale Bildlaufleiste.

Das Problem ist, dass die Listbox beim Öffnen des Formulars
immer zu letzten Wert springt, der Schieberegler ist also ganz "unten". Das geschieht unabhängig von den markierten Zeilen.

Wie kann ich erreichen, dass immer der ersten Wert oben
angezeigt wird, also der Schieberegler "oben" steht?

Mit Dank im Voraus
jagger
Titel: Re: Listenfeld ersten Wert anzeigen (Schieberegler von Bildlaufleiste immer oben)
Beitrag von: ebs17 am Januar 11, 2019, 14:57:39
Eine übersichtliche Maßnahme wäre, das Ganze einfach rückwärts laufen zu lassen, also bspw. im Recordset eine umgedrehte Sortierung zu verwenden.

Daneben könnte man den Code noch etwas optimieren, z.B. bei passender Sortierung einfach statt jeweils Anfang Liste und FindFirst gleich FindNext anwenden und direkt springen.
Sowie : Warum "SELECT *", wenn nur das Feld code verwendet wird?
Titel: Re: Listenfeld ersten Wert anzeigen (Schieberegler von Bildlaufleiste immer oben)
Beitrag von: jagger am Januar 11, 2019, 15:49:13
Hallo ebs17,

meinst Du mit rückwärts laufen zu lassen 
"For I = .ListCount - 1 To 0" ?
Wenn ich das mache, wird nix markiert.

"FindFirst" habe ich gegen "FindNext" ausgetauscht.
"SELECT *" hab ich gegen "SELECT code" ausgetauscht, wobei die Tabelle sowieso nur die Spalte "code" hat.

Das Problem besteht allerdings weiterhin.

LG
jagger
Titel: Re: Listenfeld ersten Wert anzeigen (Schieberegler von Bildlaufleiste immer oben)
Beitrag von: ebs17 am Januar 11, 2019, 16:16:42
Das wird eine Frage der genauen Umsetzung sein.

Eine denkbare andere Variante: Zeile in Kombinations-/Listenfeld auswählen (https://support.microsoft.com/de-de/help/509128)
Dazu müsste man sich die Zeilennummer der ersten Selektierung merken.
Titel: Re: Listenfeld ersten Wert anzeigen (Schieberegler von Bildlaufleiste immer oben)
Beitrag von: jagger am Januar 11, 2019, 23:55:45
@alle,

so etwas wie "TopIndex" gibt es wohl für die StandardListbox bei Access nicht?
Ich habe leider noch immer keine Lösung gefunden.

LG
jagger
Titel: Re: Listenfeld ersten Wert anzeigen (Schieberegler von Bildlaufleiste immer oben)
Beitrag von: DF6GL am Januar 12, 2019, 08:59:21
Hallo,

habe jetzt nicht alles durchgelesen, aber probier mal dies:

Me!lbxKollektionen= Me!lbxKollektionen.Column(0,0)
Titel: Re: Listenfeld ersten Wert anzeigen (Schieberegler von Bildlaufleiste immer oben)
Beitrag von: jagger am Januar 12, 2019, 14:23:51
Hallo Franz,

das bringt leider auch nicht den gewünschten Effekt.  :(

Trotzdem Danke!

LG
jagger