Hallo,
ich bin aanfänger in vba und habe das folgende problem:
ich habe eine comboliste, deren inhalt ich von einer datenbank (oracle) abrufe. es klappt auch ganz gut. aber das problem ist es, wie kann ich den inhalt sortieren. habe verschiedene möglichkeiten versucht, aber habe leider nicht hingekriegt.
die datensätze schreibe ich von der Oracle-tabelle in ein array. weiß nicht, wo ich genau sortieren sollte. schon bei der tabelle oder bei dem array. falls jemand auch das gesamte programm hat (von datenbank daten lesen und in combolist anzeigen), wäre ich sehr dankbar für die vesendung.
Hallo Ute,
danke für die schnelle Antwort. Wo kann ich aber Order by einbauen. Wie gesagt, bin ja erst seit einem Monat mit Visual Basic beschäftigt.so sieht mein programm aus:
*******************
Private Sub ComboBox1_Click()
Dim cnn1 As ADODB.Connection
Dim rstcountry As ADODB.Recordset
Dim country(255)
Dim anz As Integer
Dim i As Integer
Dim strCnn As String
Set cnn1 = New ADODB.Connection
’ Datenbank öffnen
With cnn1
.Provider = „MSDAORA.1“
.Open „Data Source=xxxx;User ID=batt;password=xxxxx“
End With
'Tabelle öffnen und Datensätze aufrufen
Set rstcountry = New ADODB.Recordset
rstcountry.CursorType = adOpenKeyset
rstcountry.LockType = adLockPessimistic
rstcountry.Open „tb_countries“, cnn1, , , adCmdTable
'Von der Tabelle (Oracle) in Array schreiben
For i = 1 To 205
country(i) = rstcountry!ctry_name_d
rstcountry.MoveNext
Next i
'Von Array in Combobox schreiben
For i = 1 To 205
ComboBox1.AddItem country(i)
Next
rstcountry.Close
cnn1.Close
End Sub
*************************
gruß
Rezaei
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Ute,
danke für die schnelle Antwort. Wo kann ich aber Order by
einbauen. Wie gesagt, bin ja erst seit einem Monat mit Visual
Basic beschäftigt.so sieht mein programm aus:
danke für die schnelle Antwort. Wo kann ich aber Order by
einbauen. Wie gesagt, bin ja erst seit einem Monat mit Visual
Basic beschäftigt.so sieht mein programm aus:
*******************
Private Sub ComboBox1_Click()
Dim cnn1 As ADODB.Connection
Dim rstcountry As ADODB.Recordset
Dim country(255)
Dim anz As Integer
Dim i As Integer
Dim strCnn As String
Set cnn1 = New ADODB.Connection
’ Datenbank öffnen
With cnn1
.Provider = „MSDAORA.1“
.Open „Data Source=xxxx;User ID=batt;password=xxxxx“
End With
'Tabelle öffnen und Datensätze aufrufen
Set rstcountry = New ADODB.Recordset
rstcountry.CursorType = adOpenKeyset
rstcountry.LockType = adLockPessimistic
nimmst du:
rstcountry.Open „SELECT * FROM tb_countries ORDER BY Id ASC“, cna, adOpenDynamic, adLockPessimistic
Statt Id musst du den Namen des Feldes eingeben, nach dem sortiert werden soll.
Wenn du absteigend sortieren möchtest, ersetzt du ASC durch DESC.
Gruß.Timo
'Von der Tabelle (Oracle) in Array schreiben
For i = 1 To 205
country(i) = rstcountry!ctry_name_d
rstcountry.MoveNext
Next i
'Von Array in Combobox schreiben
For i = 1 To 205
ComboBox1.AddItem country(i)
Next
rstcountry.Close
cnn1.Close
End Sub
*************************
gruß
Rezaei
Hallo, Rezaei!
Bin zwar auch nicht die Überfliegerin (werde gleich auch ne
Frage Posten :-") aber ich würde zum „ORDER BY“ greifen.
Das hat IMHO 2 Vorteile:
Brauchst Du die Sortierung nicht zu programmieren
Dürfte das DBMS die Sortierung schneller fertig haben als
jede in VB(A) selbstprogrammierte Prozedur.
Hallo Ute,
die Zeile ist dafür da, daß ich eine Tabelle öffnen kann. Deine Schreinweise war fast richtig, aber hatte eine Fehlermeldung bekommen. Dann hatte ich einen Hinweis vom Timo (Danke Timo) und nun geht es.
So sollte die Zeile aussehen:
rstcountry.Open „SELECT * FROM tb_countries ORDER BY Id ASC“, cna, adOpenDynamic, adLockPessimistic
Danke
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]