PDA

Показать полную графическую версию : Проблема с запросом


blackeangel
13-10-2021, 19:22
Помогите правильно подключиться к таблице в Access файле. Пишет всё время, что непонятная конструкция.
Что ему надо что б понять, что это файл, это таблица и надо взять данные из неё?

Sub Macros4()
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Provider=SQLOLEDB.1;Password=123456789;Persist Security Info=True;User ID=Admin;Initial Catalog=db_production;Data Source=RTVSMSQL-01"
conn.Open
Set rst = CreateObject("ADODB.Recordset")
rst.ActiveConnection = conn
rst.CursorType = adOpenStatic
'Asked = "SELECT * FROM [OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\123.accdb].[otchet]"
'Asked = "SELECT * FROM [ODBC;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\123.accdb].[otchet]"
'Asked = "SELECT * FROM [ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\123.accdb].[otchet]"
Asked = "SELECT * FROM [OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\123.accdb].[otchet]"
rst.Open Asked, conn
Stop
End Sub

Iska
13-10-2021, 20:54
Здесь: Microsoft ACE OLEDB 12.0 Connection Strings - ConnectionStrings.com (https://www.connectionstrings.com/ace-oledb-12-0/) смотрели?

Выделенное:
Asked = "SELECT * FROM [OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\123.accdb].[otchet]"
в данном контексте — лишнее.

Разрядность приложения, если мне не изменяет память, должна совпадать с разрядностью драйвера OLE DB.

blackeangel
13-10-2021, 20:57
Iska, как раз не лишнее. ТК conn подключился к серверу, а мне нужна таблица, которая находится в другом файле mdb, а вызов всего этого происходит из надстройки Excel

Вот как раз надо подключиться к той БД прям в запросе уже. С сервером аналогичное прокатывает.

Iska
13-10-2021, 23:18
Строка подключения должна быть здесь:
conn.ConnectionString = "…"

blackeangel
14-10-2021, 06:14
Iska, если так делать, то мы потеряем текущее соединение

blackeangel
14-10-2021, 08:09
Если подключиться к БД Access и выполнять запрос с сервера, то рабочий код такой:
Sub Macros5()
Set cnt = CreateObject("ADODB.Connection")
cnt.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\123.accdb;"
cnt.Open
Set rs = CreateObject("ADODB.Recordset")
rs.ActiveConnection = cnt
rs.CursorType = adOpenStatic
ask = "SELECT [blank] INTO base FROM [ODBC;Driver=SQL Server; SERVER=RTVSMSQL-01;UID=Admin; DATABASE=db_production; PWD=123456789].[dbo.example_table]"
rs.Open Asked, cnt
Stop
End Sub
Но мне надо наоборот. А как это выглядит не пойму никак.

blackeangel
14-10-2021, 08:10
А ошибку выдает такую




© OSzone.net 2001-2012