Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как создать сохраненный запрос к серверу по ADO / 11 сообщений из 11, страница 1 из 1
03.03.2022, 09:35
    #40137243
Adilby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать сохраненный запрос к серверу по ADO
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    
Public Function connectDSN(cn As String) As String
     Select Case cn
        Case "Ado"
            connectDSN = "DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=" & tSRV & ";Port =3306;" & vbCr & "User=" & tUSR & ";" & vbCr & "Password=" & tPSW & ";" & vbCr & "stmt=set names utf8;" & _
                "Database=" & tBS & ";Trusted Connection=No;"
        Case "Dao"
            connectDSN = "ODBC;Driver=MySQL ODBC 5.3 Unicode Driver;Server=" & tSRV & ";Database=" & tBS & ";UID=" & tUSR & ";PWD=" & tPSW & ";OPTION=4194304;"
    End Select
End Function



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    
    If DCount("Name", "MSysObjects", "Type = 5 And Name = 'tblServer'") = 1 Then CurrentDb.QueryDefs.Delete "tblServer"
    Set qry = CurrentDb.CreateQueryDef("tblServer")
    qry.Connect = connectDSN("Dao")
    qry.ReturnsRecords = True
    qry.SQL = strSQL
    Set qry = Nothing



Код: vbnet
1.
CurrentDb.Execute ("INSERT INTO tblLocal (pole) SELECT pole FROM  tblServer;")



Как создать сохраненный запрос к серверу по ADO соединению?
...
Рейтинг: 0 / 0
03.03.2022, 10:30
    #40137258
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать сохраненный запрос к серверу по ADO
1. "Сохраненный запрос" называется "процедура".
2. Создание
Код: sql
1.
CurrentDb.Execute ("create procedure MyCoolProc as INSERT INTO tblLocal (pole) SELECT pole FROM  tblServer;")


3. Вызов
Код: sql
1.
CurrentDb.Execute ("MyCoolProc")
...
Рейтинг: 0 / 0
03.03.2022, 11:01
    #40137266
Adilby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать сохраненный запрос к серверу по ADO
Adilby

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    
    If DCount("Name", "MSysObjects", "Type = 5 And Name = 'tblServer'") = 1 Then CurrentDb.QueryDefs.Delete "tblServer"
    Set qry = CurrentDb.CreateQueryDef("tblServer")
    qry.Connect = connectDSN("Dao")
    qry.ReturnsRecords = True
    qry.SQL = strSQL
    Set qry = Nothing




Я имел ввиду вот этот запрос к серверу. Он работает через DAO соединение, а мне бы хотелось иметь такой запрос по ADO соединению. DAO не стабильно работает.
...
Рейтинг: 0 / 0
03.03.2022, 12:03
    #40137289
Adilby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать сохраненный запрос к серверу по ADO
tblServer - сохраненный в аксесе запрос к серверу.
tblLocal - таблица в аксес.
...
Рейтинг: 0 / 0
03.03.2022, 12:27
    #40137298
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать сохраненный запрос к серверу по ADO
tblServer - это у вас запрос к внешнему серверу, например к MS SQL Server?

вероятно вы хотели сделать pass-through query. это можно сделать как в ручном режиме из интерфейса, так и программно.

смотрите тут: https://docs.microsoft.com/ru-ru/office/troubleshoot/access/adox-create-sql-pass-through-query
...
Рейтинг: 0 / 0
03.03.2022, 13:44
    #40137345
Adilby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать сохраненный запрос к серверу по ADO
Konst_One
tblServer - это у вас запрос к внешнему серверу, например к MS SQL Server?

Да, верно. Но в моем случае сервер на MySQL.

Konst_One
вероятно вы хотели сделать pass-through query. это можно сделать как в ручном режиме из интерфейса, так и программно.

смотрите тут: https://docs.microsoft.com/ru-ru/office/troubleshoot/access/adox-create-sql-pass-through-query

Создал запрос по примеру вашей ссылки, но он ни чем не отличается от ранее созданного моего запроса:

Adilby
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    
Public Function connectDSN(cn As String) As String
     Select Case cn
        Case "Ado"
            connectDSN = "DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=" & tSRV & ";Port =3306;" & vbCr & "User=" & tUSR & ";" & vbCr & "Password=" & tPSW & ";" & vbCr & "stmt=set names utf8;" & _
                "Database=" & tBS & ";Trusted Connection=No;"
        Case "Dao"
            connectDSN = "ODBC;Driver=MySQL ODBC 5.3 Unicode Driver;Server=" & tSRV & ";Database=" & tBS & ";UID=" & tUSR & ";PWD=" & tPSW & ";OPTION=4194304;"
    End Select
End Function



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    
    If DCount("Name", "MSysObjects", "Type = 5 And Name = 'tblServer'") = 1 Then CurrentDb.QueryDefs.Delete "tblServer"
    Set qry = CurrentDb.CreateQueryDef("tblServer")
    qry.Connect = connectDSN("Dao")
    qry.ReturnsRecords = True
    qry.SQL = strSQL
    Set qry = Nothing




Мне хотелось бы использовать именно строку подключения ADO:
Код: vbnet
1.
2.
connectDSN = "DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=" & tSRV & ";Port =3306;" & vbCr & "User=" & tUSR & ";" & vbCr & "Password=" & tPSW & ";" & vbCr & "stmt=set names utf8;" & _
                "Database=" & tBS & ";Trusted Connection=No;"
...
Рейтинг: 0 / 0
03.03.2022, 13:52
    #40137348
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать сохраненный запрос к серверу по ADO
не понимаю, что вам нужно. Сначала убедитесь, что вы можете через интерфейс Access произвести нужные вам действия.

PS
откройте ODBC-менеджер, создайте там нужный вам DSN и уже его используйте в pass-through query
...
Рейтинг: 0 / 0
04.03.2022, 13:10
    #40137545
Adilby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать сохраненный запрос к серверу по ADO
Хорошо, если кратко вопрос такой:
Можно ли импортировать данные из таблицы сервера MySQL в локальную таблицу Access через соединение по ADO? Через пробежку по recordset не надо, работает долго, надо через INSERT, работает быстрее, типа
Код: vbnet
1.
CurrentDb.Execute ("INSERT INTO tblLocal (pole) SELECT pole FROM  tblServer;")
...
Рейтинг: 0 / 0
04.03.2022, 13:19
    #40137548
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать сохраненный запрос к серверу по ADO
так вы же писали, что линковка таблички из MySQL у вас нормально работает, так в чём тогда вопрос?

порядок должен быть такой:
1. линкуем табличку(view) из MySQL в вашу базу MDB
2. делаем обычный запрос внутри вашей MDB , использую уже прилинкованную табличку(view)

PS
можете юзать ADO или DAO, это как вам уже удобней
...
Рейтинг: 0 / 0
04.03.2022, 16:17
    #40137585
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать сохраненный запрос к серверу по ADO
Интересно:а какова степень "кривизны" рук у того кто это заявляет
Adilby
..... DAO не стабильно работает.
Adilby
Через пробежку по recordset не надо, работает долго, надо через INSERT, работает быстрее
То что любой запрос это есть "пробежка по рекордсету" (правда не в VBA-в машинных кодах,к которым,в конечном счете,приходит и VBA) мы не ведаем
Не "изобретайте" велосипед-Вам еще в первом ответе сказали как надо делать
...
Рейтинг: 0 / 0
04.03.2022, 18:20
    #40137621
Как создать сохраненный запрос к серверу по ADO
Adilby
Хорошо, если кратко вопрос такой:
Можно ли импортировать данные из таблицы сервера MySQL в локальную таблицу Access через соединение по ADO?




Я выкрутился следующим образом.
1. Создал DSN через
панель управления -> администрирование -> источники данных ODBC
2. Дальше в своей базе данных
Внешние данные -> Создать источник данных -> Из других источников -> База данных ODBC -> Импорт -> Источник данных компьютера
3. После импорта Access сам прелагает сохранить операцию импорта.
4. А дальше просто на кнопку простейший код повесил.

Код: vbnet
1.
2.
3.
4.
...
DoCmd.DeleteObject acTable, "таблица"
DoCmd.RunSavedImportExport "Импорт который я сохранил"
...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как создать сохраненный запрос к серверу по ADO / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]