VBA Script zum Zugriff auf MYSQL Datenbank mit ado

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: VBA Script zum Zugriff auf MYSQL Datenbank mit ado
von: Ingo
Geschrieben am: 30.09.2015 13:59:06

Grüß Gott,
ich habe mir ein Svript angepasst, welches mir einen Datnsatz in eine MYSQL Datenbank über ADO einträgt:

Private Sub CommandButton1_Click()
    ' PLEASE DO THE FOLLOWING BEFORE EXECUTING CODE:
    ' 1)In VBE you need to go Tools/References and check Microsoft Active X Data Objects 2.x  _
library
    ' 2)Install MySQL ODBC 3.51 Driver. See dev.mysql.com/downloads/connector/odbc/3.51.html or  _
 _
 _
google "MySQL ODBC 3.51 Driver"
    Dim conn As New ADODB.Connection
       
    Set conn = New ADODB.Connection
    conn.Open "DRIVER={MySQL ODBC 3.51 Driver}" _
    & ";SERVER=" & "server" _
    & ";DATABASE=" & "exceltest" _
    & ";UID=" & "exceltester" _
    & ";PWD=" & "xxx" _
    & ";OPTION=16427" ' Option 16427 = Convert LongLong to Int: This just helps makes sure that  _
 _
 _
large numeric results get properly interpreted
   
    SQLStr = "INSERT INTO exceltest.excel (name) VALUES('yeah;');"
    
    conn.Execute SQLStr
    conn.Close
    Set conn = Nothing
    MsgBox "done"
End Sub

Dieser Quelltext funktioniert auch und trägt einen neuen Datensatz mit dem Namen yeah in die Datenbank.
Jetzt bin ich dabei eine Abfrage zu gestalten, welche mir Daten aus einer MYSQL-Datenbank in Excel anzeigt. Dies ist mein bisheriger Versuch, auf Basis des INSERT Eintrag von oben, der ja schon funktioniert:
Private Sub CommandButton1_Click()
    ' PLEASE DO THE FOLLOWING BEFORE EXECUTING CODE:
    ' 1)In VBE you need to go Tools/References and check Microsoft Active X Data Objects 2.x  _
library
    ' 2)Install MySQL ODBC 3.51 Driver. See dev.mysql.com/downloads/connector/odbc/3.51.html or  _
 _
 _
google "MySQL ODBC 3.51 Driver"
    Dim conn As New ADODB.Connection
       
    Set conn = New ADODB.Connection
    conn.Open "DRIVER={MySQL ODBC 3.51 Driver}" _
    & ";SERVER=" & "server" _
    & ";DATABASE=" & "exceltest" _
    & ";UID=" & "exceltester" _
    & ";PWD=" & "xxx" _
    & ";OPTION=16427" ' Option 16427 = Convert LongLong to Int: This just helps makes sure that  _
 _
 _
large numeric results get properly interpreted
   
sql = "SELECT * From exceltest.excel;"
	
	Set rs = conn.Execute(sql)
	
	' output to sheet named "Tabelle2"
	Dim i as Long
	i = 2 ' start at row 2 as the headers will be on row 1
	Sheets("Tabelle2").Activate
	
	ActiveSheet.Cells(1,1).Value = "Name"
	
	Do While Not rs.EOF
		With ActiveSheet
			.Cells(i, 1).Value = rs.Fields(0).Value
		End With
	  	i = i + 1 ' move to the next row
	Loop
	rs.Close
    conn.Close
    Set conn = Nothing
    MsgBox "done"
End Sub

Dieser Quelltext trägt mir auch den Namen (überschrift) und in einer Endlosschleife den ersten Datnsatz den er in MYSQL findet untereinander in die Spalte A ein. Bis auf die Endlosschleife bin ja schon ziemlich zufrieden, aber wie bekomme ich diese nur weg?
Vielen Dank für jeden Tipp
Ingo

Bild

Betrifft: AW: VBA Script zum Zugriff auf MYSQL Datenbank mit ado
von: Born
Geschrieben am: 30.09.2015 14:42:11
Hi Ingo,
in Deiner While-Schleife musst Du das rs.Objekt auch um 1 erhöhen. Kann gerade nicht in meine Beispiele reinschauen. Wenn ich mich recht erinnere, ging es mit rs.MoveNext.
Gruß,
M. Born

Bild

Betrifft: AW: VBA Script zum Zugriff auf MYSQL Datenbank mit ado
von: Ingo
Geschrieben am: 30.09.2015 15:06:54
Super; Vielen lieben Dank; genau .movenext hat gefehlt;
dann fehlt mal nur noch ein Update:)
Ich werde mal mit diesem Ansatz arbeiten:
'rs update
rs.Open "SELECT * FROM my_ado"
rs!Name = "update"
rs!txt = "updated-row"
rs.Update
rs.Close
Wobei das SQL-Query dann ja sinnvollerweise eine where Abfrage auf Basis eines Primärschlüssels durchführen sollte, denke ich...
Einen entspannten RestMittwoch

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Script zum Zugriff auf MYSQL Datenbank mit ado"