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

mehrspaltige combobox

201 views
Skip to first unread message

Alexander Zeitler

unread,
Mar 15, 2001, 7:48:27 AM3/15/01
to
hallo,

mit columncount kann ich die anzahl der spalten einer combobox definieren.
jetzt habe ich diese z.b. auf "2" gesetzt. wie kann ich nun die 2. spalte
mit werten füllen? ich lasse z.b. mit folgendem code werte aus einer db in
die combobox mit vba einlesen(auslesen?)

Do While Not rsttemp.EOF
ComboBox1.AddItem (rsttemp.Fields(0))
rsttemp.MoveNext
Loop

wie ich die zweite datenspalte in der db anspreche ist mir klar....nur die
2. spalte der combobox verweigert sich mir ;)
ich habe gelesen, daß es mit list oder column funktionieren soll, was ich
aber nicht
umgesetzt bekomme

gruss und danke

Alex

--

Stefan Battermann

unread,
Mar 15, 2001, 8:35:13 AM3/15/01
to
Hallo Alexander

anbei ein paar VBA-Zeilen zum ausgeben der ACCESS-Daten
Man kann auch bis auf die beiden Zeilen (Combobox1.List) im Startmodul
schreiben, da die Felder anzahl, felder und adresse$() als öffentlich
definiert wurden.

Public anzahl
Public felder
Public adresse$()

Private Sub UserForm_Initialize()
Set Db = OpenDatabase(Name:="ACCESS.MDB")
Set rs = Db.OpenRecordset(Name:="Tabelle/Abfragename")
anzahl = rs.RecordCount - 1 ' anzahl datensätze bestimmen
felder = rs.Fields.Count - 1 ' anzahl felder bestimmen

ReDim adresse$(anzahl, felder) ' dimmensionieren der felder mit werten der
Datenbank

For i = 0 To anzahl ' Werte aus der Datenbank ACCESS übernehmen
For n = 0 To felder
If rs.Fields(n).Value <> "" Then
adresse$(i, n) = rs.Fields(n).Value
End If
Next n
rs.MoveNext
Next i
rs.Close
Db.Close


ComboBox1.List = adresse() ' Listbox1 mit Werten füllen
ComboBox1.ColumnCount = felder + 1 ' Festlegen der Anzahl der Spalten für
Listbox1

Load UserForm1
UserForm1.Show ' UserForm1 anzeigen

End Sub

Alexander Zeitler <azei...@aspintranet.de> schrieb in im Newsbeitrag:
eimxF4UrAHA.1456@tkmsftngp03...

Alexander Zeitler

unread,
Mar 15, 2001, 8:39:26 AM3/15/01
to
hallo thomas,

> With ComboBox1
> Do While Not rsttemp.EOF
> .AddItem
> .List(.ListCount-1, 0 ) = (rsttemp.Fields(0))
> .List(.ListCount-1, 1 ) = (rsttemp.Fields(1))
> rsttemp.MoveNext
> Loop
> End With
>
> --
danke für das beispiel
jetzt erhalte ich beim zweiten feld die fehlermeldung, daß der
typ nicht stimmt. verwende ich für das zweite feld der
combobox die erste spalte aus der datentabelle, so funktioniert
es. wie kann ich jetzt den datentyp(in diesem fall text) der 2. spalte so
ändern,
daß es funktioniert?

gruss

Alex


Thomas Gahler

unread,
Mar 15, 2001, 8:03:36 AM3/15/01
to
Hallo Alexander

> mit columncount kann ich die anzahl der spalten einer combobox
definieren.
> jetzt habe ich diese z.b. auf "2" gesetzt. wie kann ich nun die 2.
spalte
> mit werten füllen? ich lasse z.b. mit folgendem code werte aus einer
db in
> die combobox mit vba einlesen(auslesen?)

Ich würde es mal so versuchen

With ComboBox1
Do While Not rsttemp.EOF
.AddItem
.List(.ListCount-1, 0 ) = (rsttemp.Fields(0))
.List(.ListCount-1, 1 ) = (rsttemp.Fields(1))
rsttemp.MoveNext
Loop
End With

--
-------------------------------------------------------
Greetings from Switzerland

Thomas Gahler

Alexander Zeitler

unread,
Mar 15, 2001, 9:30:25 AM3/15/01
to
hallo stefan,

>
> anbei ein paar VBA-Zeilen zum ausgeben der ACCESS-Daten
> Man kann auch bis auf die beiden Zeilen (Combobox1.List) im Startmodul
> schreiben, da die Felder anzahl, felder und adresse$() als öffentlich
> definiert wurden.
>
danke für das umfangreiche beispiel
leider liefert rs.RecordCount den wert -2
woran könnte das liegen? ich habe keine access-db sondern
eine paradox-db über odbc - mein code sieht jetzt wie folgt aus:

Dim wrkODBC As Workspace
Dim knd As Connection
Set wrkODBC = CreateWorkspace("NewODBCWorkspace", _
"Admin", "", dbUseODBC)
Set knd = wrkODBC.OpenConnection("Connection2", , , "ODBC;DSN=hwppdox;")
Set rs = knd.OpenRecordset("SELECT * FROM KND", dbOpenDynamic)


anzahl = rs.RecordCount - 1 ' anzahl datensätze bestimmen
felder = rs.Fields.Count - 1 ' anzahl felder bestimmen

es sind aber definitiv ca. 300 datensätze vorhanden
fields.count liefert den wert 93, was auch hinkommen müßte

gruss

Alex


Thomas Gahler

unread,
Mar 16, 2001, 10:36:00 AM3/16/01
to
Hallo Alexander

> jetzt erhalte ich beim zweiten feld die fehlermeldung, daß der
> typ nicht stimmt. verwende ich für das zweite feld der
> combobox die erste spalte aus der datentabelle, so funktioniert
> es. wie kann ich jetzt den datentyp(in diesem fall text) der 2.
spalte so
> ändern, daß es funktioniert?

Äääh, Fehlermeldung? Warum wohl? Keine Ahnung, die ComboBox sollte ja
auch vom Type 'String' sein. Vielleicht noch explizit angeben bzw.
umformen.

.List(.ListCount-1, 0 ) = CStr(rsttemp.Fields(0))
.List(.ListCount-1, 1 ) = CStr(rsttemp.Fields(1))

Stefan Battermann

unread,
Mar 16, 2001, 9:23:58 AM3/16/01
to
Hallo Alex,
Kann es Dir nicht genau beantworten, da ich keine PARADOX-Datenbank besitze.
Aber diese Variante müsste eigentlich funktionieren

anzahl=0
rs.movefirst
Do While Not rs.EOF
anzahl=anzahl+1
rs.MoveNext
Loop

0 new messages