Wie kann ich mit VBA (Excel) auf mySql zugreifen ?

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Wie kann ich mit VBA (Excel) auf mySql zugreifen ?

Postby eppi » 26. January 2008 17:48

Hallo,

ich habe auf meinem Computer mir den Apache-Server eingerichtet.
mit folgendem php-Code lese ich Daten aus meiner Datenbank aus:


// Verbinden zur Datenbank
$tabellenname="member";
$conn = mysql_connect("localhost","root"); //Datenbankverbindung
mysql_select_db("studio", $conn); //Datenbank auswählen


// SQL-String zusammenbauen
$sql="SELECT * FROM $tabellenname WHERE vorname='Klaus'";
$recordset = mysql_query($sql, $conn); // Recordset ermitteln


Das selbe möchte ich auch mit VBA aus einer Excel-Application machen.
Ich benutze Excel 2003.

Wer kann mir helfen.


Eppi
eppi
 
Posts: 9
Joined: 14. January 2008 17:39

Postby Wiedmann » 26. January 2008 18:18

Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby eppi » 09. February 2008 17:48

Hallo Wiedmann,

leider komme ich erst jetzt dazu dir zu antworten.

Vielen Dank für deinen Link . Ich habe mir den DRIVER installiert und mich mit der Programmierung beschäftigt.
Ich habe mir die Sub " myodbc_ado_Click" aus Kapitel Connector/ODBC Programming kopiert und in ein Excel-Modul eingefügt und getestet, das klapp alles .

Danach habe ich untenstehende Prozeduren programmiert.
Sub TabelleAnlegenMitZweiDatensätzen läuft fehlerfrei.

Bei den anderen Sub's kommt in der Zeile die mit (***) gekennzeichnet ist folgende Fehlermeldung
" Die Verbindung kann nicht verwendet werden, um diesen Vorgang auszuführen. Sie ist entweder geschlossen oder in diesem Zusammenhang ungültig."

Ich hoffe, dass du mir helfen kannst.


Eppi



Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
'---------------------------------------------------------------------------------------
Private Sub TabelleAnlegenMitZweiDatensätzen()

' Connection zu MySQL server
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=localhost;" _
& "DATABASE=Test;" _
& "UID=root;OPTION=3"

' Table anlegen
conn.Open
conn.Execute "DROP TABLE IF EXISTS Namen"
conn.Execute "CREATE TABLE Namen(ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY," _
& "Anrede VARCHAR( 20 ) NOT NULL ," _
& "Vorname VARCHAR( 20 ) NOT NULL ," _
& "Nachname VARCHAR( 20 ) NOT NULL )"

' zwei Datensätze einfügen
conn.Execute "INSERT INTO Namen(Anrede,Vorname,Nachname) values('Herr','Peter','Müller')"
conn.Execute "INSERT INTO Namen(Anrede,Vorname,Nachname) values('Herr','Willi','Meier' )"
conn.Close
End Sub

'---------------------------------------------------------------------------------------
Private Sub DatensatzEinfügen()

Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=localhost;" _
& "DATABASE=Test;" _
& "UID=root;OPTION=3"

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer

' Datensätze auslesen
(***) rs.Open "SELECT * FROM Namen", conn, adOpenDynamic, adLockOptimistic

rs.AddNew
rs!Anrede = "Frau"
rs!Vorname = "Ilse"
rs!Nachname = "Werner"
rs.Update
rs.Close
conn.Close
End Sub

'---------------------------------------------------------------------------------------
Private Sub DatensatzÄndern()

Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=localhost;" _
& "DATABASE=Test;" _
& "UID=root;OPTION=3"

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer

' Datensätze auslesen
(***) rs.Open "SELECT * FROM Namen WHERE Vorname='Peter'", conn, adOpenDynamic, adLockOptimistic

rs!Anrede = "Herr Dr."
rs.Update
rs.Close
conn.Close
End Sub
eppi
 
Posts: 9
Joined: 14. January 2008 17:39

Postby eppi » 11. February 2008 16:27

Hallo und guten Tag,

ich habe meinen Fehler gefunden.

Nach der Anweisung "conn.ConnectionString = ......... "
muß die Anweisung "conn.Open" folgen.

eppi
eppi
 
Posts: 9
Joined: 14. January 2008 17:39

Postby eppi » 11. February 2008 17:08

Neues Problem .
Wer kann mir helfen ?



Dim Connec As ADODB.Connection
Dim Recset As ADODB.Recordset
Dim MgNummer As String


Rem *********************************************************************
Rem Daten anzeigen
Rem *********************************************************************
Private Sub UserForm_Initialize()

Set Connec = New ADODB.Connection
Connec.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=localhost;" _
& "DATABASE=studio;" _
& "UID=root;OPTION=3"
Connec.Open
End Sub

Rem *********************************************************************
Rem Mitgliedsdaten anzeigen
Rem *********************************************************************
Private Sub cmdOK_Click()

MgNummer = Me.txtIDNr
Set Recset = New ADODB.Recordset
Recset.CursorLocation = adUseServer

Recset.Open Source:="SELECT * FROM member WHERE ID='" & MgNummer & "'", ActiveConnection:=Connec, _
CursorType:=adOpenDynamic, LockType:=adLockOptimistic

Me.cboAnrede = Recset!anrede
Me.txtVorname = Recset!vorname
Me.txtNachname = Recset!nachname
Me.txtStaße = Recset!strasse
Me.txtOrt = Recset!ort
Me.txtPlz = Recset!plz
Me.txtGeburt = Recset!geburt
Me.txtTelefon = Recset!telefon
Me.txtEmail = Recset!Email

End Sub

Rem *********************************************************************
Rem Daten ändern
Rem *********************************************************************
Private Sub cmdÄndern_Click()

Recset!anrede = Me.cboAnrede
Recset!vorname = Me.txtVorname
Recset!nachname = Me.txtNachname
Recset!strasse = Me.txtStaße
Recset!ort = Me.txtOrt
Recset!plz = Me.txtPlz
Recset!geburt = Me.txtGeburt
Recset!telefon = Me.txtTelefon
Recset!Email = Me.txtEmail
Recset.Update ' (******)

End Sub


(******) hier kommt folgende Fehlermeldung
" Fehler bei einer abfragebasierten Aktualisierung, da die zu aktualisierende Zeile nicht gefunden werden konnte"


eppi
eppi
 
Posts: 9
Joined: 14. January 2008 17:39

Postby eppi » 16. February 2008 18:13

An alle die es interessiert !

Ich habe den Fehler gefunden.
In meiner Datenbank gibt es noch eine Feld "Bemerk" welches als "Text" definiert ist. Dieses Feld muß wenigstens ein Leerzeichen beinhalten, sonst kommt diese nichtssagende Fehlermeldung.


eppi
eppi
 
Posts: 9
Joined: 14. January 2008 17:39

Postby DJ DHG » 17. February 2008 00:39

Moin Moin!

Sorry, wenn ich nichts zum eigentlichem Thema beitrage, aber bitte
gewöhne dir doch die Code-Tags an.
Dadurch lässt sich dein Code besser lesen.

mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 5 guests