Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Access + MySql  [new]
PWW
Member

Откуда: Москва
Сообщений: 3268
Приветствую всех.

Задача сделать базу на MySql + Access2003

На сервере MySql завел базу и сделал в базе табличку.

SELECT id2, txt2 FROM pww2_schema.new_table;


Задача вывести в табличую форму ее содержание.

Сделал подключение к базе
    Dim oConn As Object
    Set oConn = New ADODB.Connection
 
    oConn.Open "DRIVER={MySQL ODBC 8.0 Unicode Driver};" & _
               "SERVER=127.0.0.1;" & _
               "DATABASE=pww2_schema;" & _
               "UID=root;" & _
               "PASSWORD=pww41900;" & _
               "PORT:3306;" & _
               "Option=3;"
    
    If oConn.State = adStateOpen Then
        'MsgBox "Ok connected!"
    Else
        MsgBox "Error - not connect... "
    End If


К серверу могу обратиться и получить записи вот так
    Dim cmd As ADODB.Command  'переменная в которой будет запрос
    Set cmd = New ADODB.Command
    
    Dim rec As ADODB.Recordset 'переменная в которой будет результат запроса
    Set rec = New ADODB.Recordset
    
    Set cmd.ActiveConnection = oConn 'указываем соединение см.выше
    cmd.CommandText = "SELECT * FROM pww2_schema.new_table;" 'запрос к БД
    cmd.CommandType = adCmdText
    cmd.Execute
     
    Set rec.ActiveConnection = oConn
    rec.Open cmd
    Debug.Print (rec.Fields("id2").Value)
    'потом закрыть и прибить rec, cmd, oConn 


А дальше не получается отобразить содержание таблицы в форму.
Побывал и mdb, и adp форматы.
В интернете находил решения на DAO, но не проверял их (не знаком с DAO близко).

Отзовитесь кто знает решение подобной проблемы.
10 янв 19, 17:54    [21782032]     Ответить | Цитировать Сообщить модератору
 Re: Access + MySql  [new]
Сергей Лалов
Member

Откуда: Питер,Москва, Выборг, Светогорск
Сообщений: 1266
PWW,
Приветствую, я активно использую связку MySQL + MS Access.

У меня здесь есть отдельный топик по данному вопросу. Сейчас пороюсь ,найду.

Предварительно могу сказать, что выводить данные сразу в грид табличной формы очень отвратительно.
Потому что при попытке присвоить форме отвязанный рекордсет (ну к примеру SET Me.recordset = rs 'канонический вид присвоения рекордсета форме. ) оно то все работает и присваивается, и редактируется , но эта бодяга работает так медленно, что можно состариться и умереть. Фильтры кстати пользовательские не работают при таком способе присвоения.
Сейчас найду и пришлю.
10 янв 19, 18:14    [21782044]     Ответить | Цитировать Сообщить модератору
 Re: Access + MySql  [new]
Сергей Лалов
Member

Откуда: Питер,Москва, Выборг, Светогорск
Сообщений: 1266
Вот как передать значение набора данных ADO.recordset на табличную форму (6 лет назад писал, вспомнил прослезился:))

ТУТ

При таком способе на форме ,сразу после присвоения можно в обычном ручном режиме менять данные , они автоматом будут меняться и на сервере итд.итп.( Не забудьте проиндексировать/создать ключевые поля в таблицах на самом сервере!)
Но есть одно НО, даже несколько НО. При больших размерах таблицы работает крайне медленно, слетают сортировки, не работает пользовательский фильтр. В общем плохо.

Лучше линкуйте таблицы с MySQL server в аксесс. И линкованную таблицу уже транслируйте на форму. В этом случае все работает великолепно.
10 янв 19, 18:36    [21782056]     Ответить | Цитировать Сообщить модератору
 Re: Access + MySql  [new]
vmag
Member

Откуда: MP
Сообщений: 3120
Сергей Лалов
Лучше линкуйте таблицы с MySQL server в аксесс. И линкованную таблицу уже транслируйте на форму. В этом случае все работает великолепно.


ну да, что мудрить то... такой подход самый эффективный в любых случаях, Связь с таблицами - > Внешние данные -> Источники ODBC и в путь
10 янв 19, 18:46    [21782062]     Ответить | Цитировать Сообщить модератору
 Re: Access + MySql  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 4855
Все, что не ADP - работает ужасно. И чем больше данных - тем ужаснее работает.
Линковать и так далее - зло, надо чуть-чуть изменять мышление и получать через ADO фильтрованные (отсортированные) данные и с ними уже работать. Привыкнуть к тому, что есть limit записей (WHERE limit). Любые join`ы - хоронят ваше произведение, потому делать через нативные запросы к самой MySQL, либо через созданные предварительно там запросы или view.
10 янв 19, 18:57    [21782071]     Ответить | Цитировать Сообщить модератору
 Re: Access + MySql  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 15278
Озверин,

adp - вещь!!!
10 янв 19, 20:34    [21782169]     Ответить | Цитировать Сообщить модератору
 Re: Access + MySql  [new]
Сергей Лалов
Member

Откуда: Питер,Москва, Выборг, Светогорск
Сообщений: 1266
vmag
....
ну да, что мудрить то... такой подход самый эффективный в любых случаях, Связь с таблицами - > Внешние данные -> Источники ODBC и в путь


Очень удобно и вариант бюджетный и синтаксис MySQL очень дружелюбен , и тут же можно параллельно писать веб морды на народных JS+PHP+HTML :)
11 янв 19, 10:16    [21782490]     Ответить | Цитировать Сообщить модератору
 Re: Access + MySql  [new]
Сергей Лалов
Member

Откуда: Питер,Москва, Выборг, Светогорск
Сообщений: 1266
Озверин
Все, что не ADP - работает ужасно. И чем больше данных - тем ужаснее работает.
Линковать и так далее - зло, надо чуть-чуть изменять мышление и получать через ADO фильтрованные (отсортированные) данные и с ними уже работать. Привыкнуть к тому, что есть limit записей (WHERE limit). Любые join`ы - хоронят ваше произведение, потому делать через нативные запросы к самой MySQL, либо через созданные предварительно там запросы или view.


ADP весчь, но её больше не поддерживают , начиная с MS Access 2013, RIP. Последние года два в основном в компаниях ставят уже MS 2013.
11 янв 19, 10:52    [21782525]     Ответить | Цитировать Сообщить модератору
 Re: Access + MySql  [new]
PWW
Member

Откуда: Москва
Сообщений: 3268
Сергей Лалов,


Ну в общем попробовал, спасибо ("какая гадость это ваша заливная рыба").

Форма выводится пустая

Dim rst As New ADODB.Recordset
Dim strSQL As String
strSQL = "SELECT id2,ttt2 FROM pww2_schema.new_table;"

rst.Open strSQL, oConn, adOpenDynamic, adLockOptimistic
Set Me.Recordset = rst

''''''''''

rst.Close
oConn.Close
Set rst = Nothing
Set oConn = Nothing


К сообщению приложен файл. Размер - 40Kb
11 янв 19, 13:47    [21782799]     Ответить | Цитировать Сообщить модератору
 Re: Access + MySql  [new]
PWW
Member

Откуда: Москва
Сообщений: 3268
Продолжу:
Попробовал побегать по Recordset, по серверному рекорсету бегает, но на форму перенести по строкам не получилось. По ней, я так понимаю, надо тоже перемещаться, а это как раз и не получилось.
11 янв 19, 13:51    [21782809]     Ответить | Цитировать Сообщить модератору
 Re: Access + MySql  [new]
Сергей Лалов
Member

Откуда: Питер,Москва, Выборг, Светогорск
Сообщений: 1266
PWW
Продолжу:
Попробовал побегать по Recordset, по серверному рекорсету бегает, но на форму перенести по строкам не получилось. По ней, я так понимаю, надо тоже перемещаться, а это как раз и не получилось.


Возникала подобная проблема, когда место в гриде табличной формы резервируется по количеству строк, но самих записей не видно.

1) Посмотрите в какой кодировке у вас данные в базе на MYSQL (я всегда ставлю стандартную UTF 8 general ci)
2) Проверьте там же на сервере в таблице базы ,что есть ключевое поле, PRIMARY KEY. Если нет, то обязательно нужно назначить.
3) Скачайте на компьютер сразу и 32х b 64x битную версию MySQL ODBC driver.
11 янв 19, 16:45    [21783050]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить