PTA Tab Erstellen

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Du willst eine Tabelle in einer MySQL Datenbank erstellen. Dazu benutzt du am einfachsten eine Pass-Through Abfrage. Das folgende Beispiel erstellt mit Hilfe von VBA eine temporäre Abfrage.

Die Werte, die zum Erstellen der Tabelle notwendig sind, werden im Beispiel als Konstanten angegeben. Natürlich können diese auch variabel gestaltet werden.

Die Optionen des Verbindungsstrings sind MySQL-spezifische Einstellungen, die bevorzugt benutzt werden sollten mit Access.

Lösung

Den folgenden Code in ein Standardmodul kopieren:

Option Compare Database
Option Explicit
 
Private Const con As String = "ODBC;DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=localhost;" _
& "DATABASE=Name_Datenbank;" _
& "UID=root;" _
& "DSN=DSN_Bezeichnung;" _
& "PWD=Passwort;" _
& "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384
Private Const MSQL As String = "CREATE TABLE t (c CHAR(20)" & _
" CHARACTER SET utf8 COLLATE utf8_bin);"
 
Public Function CreateTableMySQL(strSQL As String, _
ConnectString As String) As Boolean
On Error GoTo Er
 
Dim db As DAO.Database, qdf As DAO.QueryDef
 
 
Set db = DBEngine.Workspaces(0).Databases(0)
Set qdf = db.CreateQueryDef("")
 
qdf.Connect = ConnectString 'Die ODBC Verbindung
qdf.SQL = strSQL 'Das SQL Statement muss MySQL konform sein
qdf.ReturnsRecords = False 'Wichtig, da keine Daten zurück gegeben werden
 
qdf.Execute (dbSQLPassThrough)
 
qdf.Close
set qdf = Nothing
 
db.Close
set db = Nothing
 
CreateTableMySQL = True
 
Ex:
On Error Resume Next
Exit Function
Er:
CreateTableMySQL = False
Resume Ex
End Function
 
Public Sub test()
 
If Not CreateTableMySQL(MSQL, con) Then
MsgBox ("Abfrage kann nicht erstellt werden")
Exit Sub
End If
 
End Sub

Aufruf

call test