Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Работа с таблицами расположенными в Mysql


Автор: vngr6 5.2.2017, 19:11
База данных расположена в MySql
Подчинённая таблица через ODBC подключена к Аксес 
Две таблицы связаны по полю "idsub" 1:М.
Характеристики основной таблицы :
   - кол строк - 1,0 млн  (может  больше )
   - количество столбцов ~ 20 штук
Характеристики подчинённой таблицы:
   - кол строк - > 1,0 млн  
   - количество столбцов ~ 20 штук
    
    Если увеличить количество строк в подчинённой таблице - более 100 000, то при 
перемещении курсором по записям основной таблицы компьютер начинает тормозить.

Вопрос.
    1. Что можно сделать чтобы не было торможения?
    2. Приемлемо ли использование такие инструменты - MySql, Аксес для такой базы?
    3. Какое программное обеспечение желательно применять в таких ситуациях?
    4. Или как правильно организовать взаимодействие между таблицами?

Файл находится по ссылке http://transfiles.ru/1b4s0

Автор: Akina 6.2.2017, 08:33
Вынесите ВСЕ таблицы на сервер. Чтобы именно там выполнялся ВЕСЬ SQL-код. 
Сейчас Вы гоняете туда-сюда тонны ненужной информации. И странно, что не тормозило раньше...

Автор: vngr6 6.2.2017, 19:53
Сделал так:

Разместил всё на сервере
Сделал форму на которой нужно ввести критерий запроса.
Сделал запрос "К серверу" 

Код

SELECT tbl5.*, tbl5.idsub
FROM tbl5
WHERE (((tbl5.idsub)=[Формы]![03_frm_00_tbl_00]![03_frm_idsub]));



В результате выдаёт ошибку.

Правильно ли я вас понял?
Как можно исправить ошибку?

Автор: Akina 6.2.2017, 19:59
Цитата(vngr6 @  6.2.2017,  20:53 Найти цитируемый пост)
Правильно ли я вас понял?

Наполовину. Вот тут:
Цитата(vngr6 @  6.2.2017,  20:53 Найти цитируемый пост)
Разместил всё на сервере

всё правильно, а вот тут:
Код

SELECT tbl5.*, tbl5.idsub
FROM tbl5
WHERE (((tbl5.idsub)=[Формы]![03_frm_00_tbl_00]![03_frm_idsub]));
неправильно. Было бы правильно, если бы Вы данные забрали с сервера в Аксесс. А сейчас Вы пытаетесь заставить MySQL понять, что это вот за хрень такая, формы какие-то, знаки восклицательные? скобки квадратные... нет у него этого дела.

Нужно ПОДСТАВИТЬ вместо [Формы]![03_frm_00_tbl_00]![03_frm_idsub] реальное значение (и обрамить кавычками - если это число, то желательно, иначе обязательно). Ну а потом уже Requery... 

Автор: vngr6 6.2.2017, 20:17
Цитата

А сейчас Вы пытаетесь заставить MySQL понять, что это вот за хрень такая, формы какие-то, знаки восклицательные? 

Точно!.. Это я конечно жёстко

Цитата

Нужно ПОДСТАВИТЬ вместо [Формы]![03_frm_00_tbl_00]![03_frm_idsub] реальное значение (и обрамить кавычками - если это число, то желательно, иначе обязательно). Ну а потом уже Requery...  

Не могли бы вы более подробно расписать... 
И как сделать, чтобы я ввёл одно (или несколько) значений для выборки в форме, а эти значения подставлялись в запрос?

Похоже?

Код

SELECT * FROM tbl5 WHERE idsub = " & [Формы]![03_frm_00_tbl_00]![03_frm_idsub]

Автор: Akina 6.2.2017, 22:36
Да, нечто типа 

Код

strSQL = "SELECT * FROM [ODBC; Driver={MySQL ODBC 5.2 ANSI Driver}; Server=myServerAddress; Database=myDataBase; User=myUsername; Password=myPassword; Option=3;].tbl5 WHERE idsub = '" & [Формы]![03_frm_00_tbl_00]![03_frm_idsub] & "';"


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)