Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Проблема с запросом (http://forum.oszone.net/showthread.php?t=349793)

blackeangel 13-10-2021 19:22 2968717

Проблема с запросом
 
Помогите правильно подключиться к таблице в 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 2968721

Здесь: Microsoft ACE OLEDB 12.0 Connection Strings - ConnectionStrings.com смотрели?

Выделенное:
Код:

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

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

blackeangel 13-10-2021 20:57 2968723

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

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

Iska 13-10-2021 23:18 2968739

Строка подключения должна быть здесь:
Код:

conn.ConnectionString = "…"

blackeangel 14-10-2021 06:14 2968748

Iska, если так делать, то мы потеряем текущее соединение

blackeangel 14-10-2021 08:09 2968753

Если подключиться к БД 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 2968754

Вложений: 1
А ошибку выдает такую


Время: 14:11.

Время: 14:11.
© OSzone.net 2001-