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
--
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...
> 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
> 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
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
> 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))
anzahl=0
rs.movefirst
Do While Not rs.EOF
anzahl=anzahl+1
rs.MoveNext
Loop