ich möchte die Initialisierung einer
Combobox durchführen.
Dazu sollen die Daten einer Abfrage
verwendet werden, die mit SQL
durchgeführt wird.
Wie ist dies möglich ?
Danke im voraus.
Gruß Karl
ich möchte die Initialisierung einer
Combobox durchführen.
Dazu sollen die Daten einer Abfrage
verwendet werden, die mit SQL
durchgeführt wird.
Wie ist dies möglich ?
Danke im voraus.
Gruß Karl
Public Sub test()
GetData "select * from stamm", "MYODBC", "MyDatabase"
End Sub
Public Sub GetData(SqlString As String, _
Optional strODBCName As String = "SQLHausDB", _
Optional strDatbaseName As String = "HausDb", _
Optional StartZeilePos As Integer = 1, _
Optional StartSpaltePos As Integer = 1, _
Optional VorAktuTabDelAll As Integer = 1, _
Optional KopfZeileHolen As Integer = 1)
'VorAktuTabDelAll ... 1 gesamte Tabelle löschen
' 2 Ab Startzeile löschen
' 3 Aktuelle Zeile Rechts von Startpos löschen
Dim db As Database
Dim qu As QueryDef
Dim rs As Recordset
Dim maxRows, r, c As Long
Dim FeldVerz As Fields
Dim AktuFeld As Field
Dim strConnect As String
Dim rangHlp As Range
If KopfZeileHolen > 1 Then
MsgBox "Parameterfehler KopfZeileHolen darf nur 0 oder 1 sein"
End If
strConnect = "ODBC;DSN=" & strODBCName & ";DATABASE=" & strDatbaseName
maxRows = 65000
On Error Resume Next
Set db = CreateDatabase("c:\temp\Temp.mdb", dbLangGeneral)
On Error GoTo 0
Set db = OpenDatabase("c:\temp\Temp.mdb")
Set qu = db.CreateQueryDef("")
'Debug.Print strConnect
qu.Connect = strConnect
qu.ODBCTimeout = 300
qu.ReturnsRecords = True
Application.StatusBar = Left(SqlString, 80) + "...." + IIf(Len(SqlString) > 60, Right(SqlString, 20), "")
Debug.Print SqlString
qu.Sql = SqlString
'Datensätze holen
Set rs = qu.OpenRecordset()
Set FeldVerz = rs.Fields
'Arbeitsblatt löschen
If VorAktuTabDelAll = 1 Then 'Gesamte Tabelle Löschen
Cells.Clear
Else
If VorAktuTabDelAll = 2 Then 'Ab aktueller Zeile bis Tabellenende löschen
Cells.Range(Cells(StartZeilePos, 1), _
Cells(Cells.Rows.Count, Cells.Columns.Count) _
).ClearContents
Else
If VorAktuTabDelAll = 3 Then 'Aktuelle Position bis Zeilenende löschen
Cells.Range(Cells(StartZeilePos, StartSpaltePos), _
Cells(StartZeilePos + KopfZeileHolen, Cells.Columns.Count) _
).ClearContents
End If
End If
End If
'Datensätze in Arbeitsblatt Schreiben
If KopfZeileHolen = 1 Then
c = StartSpaltePos
For Each AktuFeld In FeldVerz ' Feldname in 1.Zeile Schreiben
ActiveSheet.Cells(StartZeilePos, c).Value = AktuFeld.Name
c = c + 1
Next AktuFeld
End If
r = StartZeilePos + KopfZeileHolen ' Mit Daten in 2. Zeile beginnen
Do While Not rs.EOF And i < maxRows
c = StartSpaltePos
For Each AktuFeld In FeldVerz
On Error Resume Next
ActiveSheet.Cells(r, c).Value = AktuFeld.Value
On Error GoTo 0
c = c + 1
Next AktuFeld
r = r + 1
rs.MoveNext
Loop
db.Close
Set db = Nothing
Application.StatusBar = False
End Sub
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen