Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mit "ItemsSelected" eine bestimmte Spalte aus einem Listenfeld auslesen

654 views
Skip to first unread message

Geza Aschoff

unread,
Feb 4, 2007, 10:31:37 AM2/4/07
to
Hallo zusammen, ich bin ganz neu hier und hoffe jemanden zu finden,
der mir bei meinem nervigem Problem weiterhelfen kann.

Mit dem folgenden Programmcode ist es mir zunächst erfolgreich
gelungen aus dem Listenfeld "Lst_B_Zutaten" den selektierten Wert
auszulesen :

Dim Sel As Variant
Dim str_B_Zutat As String
Dim ln_B_Zutat_ID As Long

Sel = Me.Lst_B_Zutaten.ItemsSelected(0)
str_B_Zutat = Lst_B_Zutaten.ItemData(Sel)

Mein Problem ist es, dass ich nicht nur die Zutat aus dem Listenfeld
benötige, sonder auch die zugehörige ID. Aus diesem Grund habe ich
zunächst die Die Datenherkunft des Listenfeldes von

SELECT
AbS_KO_Zutaten_Sortierung.Name_deutsch
FROM
AbS_KO_Zutaten_Sortierung;

auf

SELECT
AbS_KO_Zutaten_Sortierung.Name_deutsch,
AbS_KO_Zutaten_Sortierung.ID
FROM
AbS_KO_Zutaten_Sortierung;

geändert. Anschließend habe ich die Spalteneigenschaft der ID Spalte
auf 0 gesetzt, da in dem Listenfeld nur die Zutat, nicht aber die ID
stehen soll.

Ist es nach dieser geänderten Datenherkunft nicht möglich mit
"ItemsSelected" auf die ID der Zutat zuzugreifen ?

Wenn mir hier jemand helfen einen funktionierenden Code mitteilen
könnte, währe ich wirklich ausgesprochen dankbar (;->).

Beste Gruesse
Geza Aschoff

André Minhorst

unread,
Feb 4, 2007, 10:45:06 AM2/4/07
to
Hallo Geza!

Geza Aschoff schrieb:

üblicherweise macht man es so:

Die Datensatzherkunft enthält als erstes Feld eine gebundene Spalte (die
ID) und als zweites die anzuzeigende Spalte.

Für das Kombinationsfeld stellst Du die Eigenschaften Spaltenanzahl und
Spaltenbreite auf 2 und 0cm ein, somit wird die erste Spalte zwar
angezeigt, aber nur mit der Breite 0cm, die zweite Spalte nimmt den Rest
der vorhandenen Breite ein.

So kannst Du die ID ganz einfach mit Me.Kombinationsfeldname auslesen, die
zweite Spalte, also hier die Zutat, mit Me.Kombinationsfeldname.Column(1).

Wenn Du nur das aktuell ausgewählte Element auslesen willst, brauchst Du
dafür kein ItemsSelected.

Ciao
André


--
http://www.access-im-unternehmen.de
http://www.access-entwicklerbuch.de

Gunter Avenius

unread,
Feb 4, 2007, 10:51:12 AM2/4/07
to
Hallo Geza,

Geza Aschoff schrieb folgendes:

Onlinehilfe Stichwort "Column" sollte dir weiterhelfen

varEintrag=Listenfeld.Column(Spalte, Zeile)

--
Gruß
Gunter
_________________________________________________
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de

Peter Doering

unread,
Feb 4, 2007, 10:58:31 AM2/4/07
to
Hallo,

Geza Aschoff wrote:

>
> Sel = Me.Lst_B_Zutaten.ItemsSelected(0)
> str_B_Zutat = Lst_B_Zutaten.ItemData(Sel)

Zusaetzlich zu Andre's Kommentar noch eine Anmerkung:

ItemsSelected() gibt einen Fehler zurueck, wenn noch kein Item ausgewaehlt
worden ist. Ausserdem verwendet man das fuer Listenfelder, bei denen
Mehrfachauswahl erlaubt ist. Solange du nur einen einzelnen DS auswaehlst,
solltest du .Value fuer die gebundene und .Column(x) fuer die weiteren
Spalten verwenden. Siehe auch www.donkarl.com/?FAQ4.15

Gruss - Peter

--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Thomas Möller

unread,
Feb 4, 2007, 11:37:32 AM2/4/07
to
Hallo Geza,

Geza Aschoff <ge...@netcologne.de> schrieb:


> Mit dem folgenden Programmcode ist es mir zunächst erfolgreich
> gelungen aus dem Listenfeld "Lst_B_Zutaten" den selektierten Wert
> auszulesen :

ich habe da ein zwei generelle Anmerkungen zu Deinem Code:

> Dim Sel As Variant
> Dim str_B_Zutat As String
> Dim ln_B_Zutat_ID As Long
>
> Sel = Me.Lst_B_Zutaten.ItemsSelected(0)

Du solltest statt "Me." lieber "Me!" schreiben. Schau dazu auch mal
hier: www.donkarl.com?FAQ6.3


> str_B_Zutat = Lst_B_Zutaten.ItemData(Sel)

Hier sprichst Du ein Steuerelement direkt an, ohne vorangestelltes
"Me!". Das funktioniert zwar, kann aber später zu Problemen führen.
Daher hier unbedingt ergänzen:

str_B_Zutat = Me!Lst_B_Zutaten.ItemData(Sel)


CU
--
Thomas

Homepage: www.Team-Moeller.de

0 new messages