понедельник, 18 ноября 2013 г.

MYSQL and ACCESS with VBA

Для автоматизации данных из сайта можно попробовать настроить отдельную учетную запись в PHPmyAdmin, создать внутри новой базы запросы на нужную нам базу и открыть внешнее соединение.

Соединение с базой данных MySQL через Access на VBA предварительно установив ODBC драйвер для MySQL и настроив DSN - соединение в ODBC настройках.


В самом начале как обычно пишем:

Option Compare Database 'сортировка символов определяется базой данных
Option Explicit 'запретить не объявленные переменные
 Объявляем глобальные переменные, которые могут понадобиться
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset 'объект набора данных

Dim i As Integer, j As Integer 'счетчики
Dim DA 'динамический массив для вывода данных
Const Шаблон As String = "\Шаблоны\Справка.xlt" 'относительный путь к шаблону
Dim sq As String
Dim b As Boolean

Заполняем листбокс перечнем таблиц из базы данных при загрузке формы

Private Sub Form_Load()
con.ConnectionString = "DSN=domen.net;SERVER=domen.net;UID=login;PORT=3306"
con.Open
Set rs = New ADODB.Recordset
sq = "SHOW FULL TABLES IN   `db_name` "
With rs
.ActiveConnection = con
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.Open sq
End With
' Combo1.RowSourceType = query
rs.MoveFirst
While Not rs.EOF
List5.AddItem (rs(0))
' Combo1.AddItem (rs(0))
' Combo1.RowSource = rs("Tables_in_db_name")
' MsgBox rs("Tables_in_db_name")
rs.MoveNext
Wend
'   Application.DoCmd.OpenQuery " select * from db_name.vote_track"    
End Sub

' Заполняем комбобокс:

Private Sub Кнопка0_Click()
Dim ConnectionMySQL As New ADODB.Connection
Const MySQL_ConnectString = "DSN=domen.net;SERVER=domen.net;UID=login;PORT=3306"
Dim RecordsetMySQL As New ADODB.Recordset 'объект набора данных
Set ConnectionMySQL = CreateObject("ADODB.Connection") ' Create connection object
ConnectionMySQL.CursorLocation = 2 ' Use client type cursor
ConnectionMySQL.Open MySQL_ConnectString, "", "", -1 ' Connect to the database
Set RecordsetMySQL = CreateObject("ADODB.Recordset")
RecordsetMySQL.Open "SHOW FULL TABLES IN   `db_name`", ConnectionMySQL, 2, 3, 1
Do While Not RecordsetMySQL.EOF ' Do Until RecordsetMySQL.EOF
' WScript.Echo RecordsetMySQL.Fields(0)
' MsgBox RecordsetMySQL.Fields(0)
  Combo1.AddItem RecordsetMySQL!Tables_in_db_name
 RecordsetMySQL.MoveNext
Loop
RecordsetMySQL.Close
ConnectionMySQL.Close
End Sub


Строку соединения можно написать напрямую  - не создавая  настроек DSN соединения в ODBC настройках.

Const ServerName As String = "m.net"
Const User_ID  As String = "rgrgr"
Const Database_Name As String = "rgrgr"
Const Password  As String = "gfgf"
Const MySQL_ConnectString = "Driver={MySQL ODBC 5.2 ANSI Driver};Server=" & ServerName & ";Database=" & Database_Name & _
    ";Uid=" & User_ID & ";Pwd=" & Password & ";"







Комментариев нет:

Отправить комментарий

Постоянные читатели

Популярные сообщения