Організація роботи ms access-додатки з mysql - програмні продукти

Але MS Access може взаємодіяти і з іншими SQL-серверами, і Microsoft підштовхує нас до взаємодії з MS SQL Server, забезпечуючи нас для цього всім необхідним. Але я вибрав "мускул", керуючись наступними причинами.

-- Офіційна безкоштовність для розробника
-- Можливість легально завантажити дистрибутив (від 16 до 50 мегабайт в залежності від виду дистрибутива) з Інтернету
-- Кросплатформеність (не треба турбуватися, під який ОС працює сервер)
-- Простота установки (аж до простого копіювання!) І поновлення
-- Наявність повної і зрозумілої документації
-- Тобто MySQL - це сервер, який завжди з тобою

Етапи організації роботи MS Access-додатки з MySQL
Вам належить виконати наступне:

Установка на сервері MySQL

Для Windows є три типи дистрибутивів

Запускається MySQL під WIndows двома способами:

Запуском файлу mysqld.exe
Запуском служби, створеної при інсталяції (якщо Ви при інсталяції вказали, що потрібно створити службу MySQL)

Налаштування підтримки кирилиці для MySQL

При роботі MySQL під Windows Ви можете конфігурувати його параметри за допомогою файлу мy.ini

Отже, конфігураційний файл мy.ini.

# Конфігураційні параметри для сервера MySQL
[Mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
# Установка кирилиці на сервері
default-character-set = cp1251 # Вказівка ​​кодування
character-sets-dir = g: / mysql / share / charsets # Вказівка ​​шляху до папки кодувань (скоректуйте для свого сервера!)

# Конфігураційні параметри для програми резервного копіювання
[Mysqldump]
quick
max_allowed_packet = 16M
# Установка кирилиці на сервері
default-character-set = cp1251 # Вказівка ​​кодування
character-sets-dir = g: / mysql / share / charsets # Вказівка ​​шляху до папки кодувань (скоректуйте для свого сервера!)

# Конфігураційні параметри для програми-клієнта mysql.exe
[Mysql]
no-auto-rehash
# Установка кирилиці на сервері
default-character-set = cp1251 # Вказівка ​​кодування
character-sets-dir = g: / mysql / share / charsets # Вказівка ​​шляху до папки кодувань (скоректуйте для свого сервера!)

[Isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[Myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

Створити базу даних Вашого застосування

Підключення до бази даних здійснюється від імені користувача. Після інсталяції на сервері присутня один користувач root @ localhost з порожнім паролем (в ранніх версіях був ще один - root @ '%', але в останніх версіях його вже немає. Думаю, з міркувань безпеки). Так що первіе дії Вам доведеться здійснити на сервері.

Заходьте в командний рядок Windows (Start / Пуск → Run / Виконати → cmd), встановлюєте поточним каталогом підкаталог bin каталогу MySQL (в моєму випадку це G: \ mysql \ bin):
F: \> G:
G: \> cd mysql \ bin

і набираєте команду підключення до MySQL

Хост і порт прийняли значення за замовчуванням - відповідно localhost і № 3306, пароля у root поки немає (зараз ми це виправимо). І з'явилося запрошення MySQL вводити команди SQL:
G: \ mysql \ bin> mysql -uroot
Welcome to the MySQL monitor. Commands end with; or \ g.
Your MySQL connection id is 2 to server version: 5.0.27-community

Type 'help;' or '\ h' for help. Type '\ c' to clear the buffer.

Перше, що ми зробимо - змінимо пароль root: це очевидне вимога безпеки.

mysql> update mysql.user set password = Password ( 'ВашПароль') where user = 'root' and host = 'localhost';
Query OK, 0 rows affected (0.06 sec)
Rows matched: 1 Changed: 0 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.08 sec)

Пароль змінений. Але наш сеанс йде ще під старим паролем. Перервемо наш сеанс і зайдемо вже з новим паролем.

G: \ mysql \ bin> mysql -uroot -p
Enter password: *********

mysql> / * створимо користувача, під якими буде заходити додаток MS Access * /
mysql> grant all privileges on ІмяБазиДанних. * to 'логин'@'192.168%' identified by 'пароль';
Query OK, 0 rows affected (0.03 sec)

mysql> / * Створимо базу даних нашого застосування * /
mysql> create database ІмяБазиДанних;
Query OK, 1 row affected (0.00 sec)

mysql> / * Створюємо таблиці * /
mysql>

Створювати таблиці в командному рядку MySQL занадто утомливо. Тому Вам краще вибрати один з двох оптимальних шляхів.

G: \ mysql \ bin> mysql -uroot -p ІмяБазиДанних<Путь к файлу с инструкциями create table

У Вас буде запитано пароль і, якщо Ви ніде не помилилися, таблиці будуть створені

Установка драйвер ODBC на всі машини, на яких працює Ваша програма

Запускаєте інсталятор, ніяких значимих для установки питань він не здасть. Про будь-які проблеми з установкою цього драйвера я навіть не чув.

Змінити код програми - для автоматичного підключення таблиць

Вручну створювати джерело ODBC і підключати до нього таблиці - це не методи професійної розробки. Наведу приклади коду VBA для створення джерела ODBC і з'єднуватися з ним таблиць

Створення джерела ODBC
Створюється або перезаписується ODBC-джерело наступною інструкцією:

DBEngine.RegisterDatabase ІмяІсточнікаODBC, ІмяODBC-драйвера, True, СтрокаПараметровПодключенія

Dim connect as String
connect = "server = 192.168.1.1; user = manager; password = zorro; port = 3306; stmt = set names cp1251"
DBEngine.RegisterDatabase "tm", "MySQL ODBC 3.51 Driver", True, connect

Зверніть увагу на параметр stmt: саме він дозволяє MS Access коректно підтримувати кирилицю.

Видалення всіх пов'язаних таблиць
'Видалення всіх пов'язаних таблиць
Function Drop_linked_tables () As Boolean
On Error GoTo oblom
Dim TD As TableDef
Dim tableName As String

For Each TD In CurrentDb.TableDefs
If (left (TD.connect, 5) = "ODBC;") Or (left (TD.connect, 10) = "; DATABASE =") Then

tableName = TD.Name
CurrentDb.TableDefs.Delete (tableName)
End If
Next TD
CurrentDb.TableDefs.Refresh

Exit Function
oblom:
Drop_linked_tables = False

Підключення таблиць MySQL через ODBC

'Підключення таблиць MySQL через ODBC

Function StartConnectMySQL (ByVal login As String, ByVal odbcName As String, ByVal db As String) As Boolean
On Error GoTo oblom

Call Drop_linked_tables 'Вилучили всі пов'язані таблиці

Dim newTD As TableDef

Dim ws As Workspace
Set ws = CreateWorkspace ( "ws_MySQL", "", "", dbUseODBC)
Dim connect As String
connect = "ODBC; database =" db "; DSN =" odbcName
Dim MySQL As DAO.Connection
Set MySQL = ws.OpenConnection (odbcName, dbDriverComplete, False, connect)

Dim query As String
query = "use" db
MySQL.Execute (query)
query = "show tables"
Dim rst As DAO.Recordset
Set rst = MySQL.OpenRecordset (query, dbOpenDynaset)

Do While Not rst.EOF
Set newTD = CurrentDb.CreateTableDef (rst (0))
newTD.connect = "ODBC; DSN =" odbcName "; Database =" db
newTD.SourceTableName = rst (0)
CurrentDb.TableDefs.Append newTD
rst.MoveNext
Loop

Exit Function
oblom:
StartConnectMySQL = False

Ми розглянули весь процес переходу додатки MS Access на взаємодію c MySQL. Результат окупає зусилля, які будуть потрібні від вас на цьому шляху: Ви отримаєте додаток, де вже вирішені наступні завдання:

Захист бази даних від пошкодження користувачами
Запис дій користувача (лог-файли)
Крім того, Вам тепер доступні наступні можливості:

-- Розробка view, stored procedures, triggers
-- Використання транзакцій
-- Взаємодія з WEB-додатком
-- Віддалена настройка сервера баз даних

Сподіваюся, я чимось допоміг Вам на шляху до цих можливостей.

Схожі статті