geben wie die combo-box itemdata als string-Wert in visual basic 6.0
Dies ist der Beispielcode:
Set rs = Nothing
Set rs = New ADODB.Recordset
qry = "select maincategoryid,MCategoryName from mainCATEGORY"
rs.Open qry, Cn, adOpenDynamic, adLockReadOnly
If rs.EOF = False Then
Do Until rs.EOF
maincatddl.AddItem rs!MCategoryName, Val(rs!maincategoryid)
catddl.ItemData(catddl.NewIndex) = Val(rs!maincategoryid)
rs.MoveNext
Loop
End If
Er mir "error-invalid property array index". Ich habe Zeichenfolge geben Sie "Haupt" - Kategorie-id.
- Sollte catddl werden maincatddl? Nur es zeigt nicht an wo der catddl wurde als mit AddItem, damit ich nicht denke, dass Sie eine Besetzte verwenden.
- Wie kommt der Titel (hinzufügen einer Zeichenfolge wie
ItemData
) beziehen sich auf die Frage/code (Fehler durch eine falsche Steuerung name)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht direkt möglich. Allerdings könnte man ein array erstellen, zu halten die Saiten, und den ListIndex des ausgewählten Elements im ComboBox-entspricht der index des Strings.
Hoffe, das hilft
Einige Dinge hier falsch. Zuerst von allen, das bisschen code nicht wiederverwendbar, da Sie versuchen, fügen Sie den Inhalt des recordset in die Combo-Box, aber was, wenn Sie wollten, um diesen code auszuführen, wieder -, Sie bekommen eine ganze Menge von Duplikaten. Also wirklich, Sie müssen löschen Sie den Inhalt der Combo-Box, z.B.
maincatddl.Clear
... aber welche? Normalerweise, wenn Sie sehen .
AddItem()
, die nächste Zeile ist .ItemData
(.NewIndex
). Aber Sie haben zwei verschiedene Namen:,maincatddl
undcatddl
.Die Ausgewogenheit der Wahrscheinlichkeiten ist, dass Sie bestimmt
maincatddl
für die zweite Zeile. Sie haben das offensichtlich falsch verstanden, die zweiten parameter derAddItem()
MethodeIndex
. Es sieht aus, als wenn Sie denken, dies ist gedacht, um benutzerdefinierte integer ist, wie der Wert derItemData()
Eigenschaft. AberIndex
ist eigentlich die position, die Sie möchten, dass das neue Element in der Liste angezeigt. Es kann scheinen, zu arbeiten, vorausgesetzt, dassIndex
ist im Bereich von (0 -.ListCount).Sei denn, Sie möchten die Artikel erscheinen in einer bestimmten Reihenfolge, sollte diese Zeile sein ammended, um:
maincatddl.AddItem rs!MCategoryName
maincatddl.ItemData(maincatddl.NewIndex) = Val(rs!maincategoryid)
Übrigens, wenn Sie eine Menge von Paaren von Linien, die nach diesem Muster, würde ich empfehlen, Sie schreiben eine Prozedur zu Kapseln, dieses Verhalten.
Normalerweise ItemData von ComboBox und ListBox muss nur Lange Positiv Oder 0.
Der einfachste Weg zum hinzufügen anderer Arten von ItemData ist mit Sammlung.
Im folgenden Beispiel werden ItemData, von ComboBox und ListBox können folgende Arten:
Lange negativ, String, alle VB6-control (Bild als Beispiel ), ist jedes Objekt von VB6 (Formular als Beispiel).
Quelle.
Schlage ich vor, den Codejock Steuerelemente für VB6. Ich benutze Sie seit Jahren in meiner Firma.
Den ListBox-und ComboBox ItemData-und Tag-Eigenschaften von Ihnen sind Variante und Sie unterstützen strings und Objekte.