Невозможно соединиться с таблицами DB2 в Access, которые доступны в Excel - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь связать таблицу DB2 в Access 2007, чтобы воссоздать запрос, уже сделанный в Excel. Проблема, с которой я сталкиваюсь, заключается в том, что когда я использую import data -> Link data -> Select DSN from Machine Data Source -> Enter Password для подключения через ODBC, мне не нужны таблицы, которые мне нужны. Я также попытался связать таблицу с VBA с помощью приведенного ниже кода, который использует ту же строку подключения, что и подключение Excel, которое работает:

DoCmd.TransferDatabase acLink, "ODBC Database", _
     "ODBC;DSN=MyDSN;UID=UserName;PWD=Password;MODE=SHARE;DBALIAS=MyDSN;" _
      & "SCHEMALIST='ARS','BOM','DBA','FCS','HR','INT','INV','LCA','LCT','LCZ'," _
      & "'PCA','PCM','PCT','PTN','PUR','QCA','QCM','QCT','QCW','QXX','TIX','TSS'," _
      & "'UCX','WAR';", acTable, "RCX.RXSAL1", "DB2_RXSAL1"

Что в результате:

ошибка времени выполнения 3011: ядру базы данных Microsoft Office Access не удалось найти объект 'RCX.RXSAL1'. Убедитесь, что объект существует, и что вы правильно написали его имя и путь.

Я думаю, что RCX , отсутствующий в списке схем, может препятствовать тому, чтобы Access показывал это, когда я пытаюсь импортировать, но я не понимаю, почему это не позволило бы мне соединиться с этим непосредственно, используя VBA , Кроме того, когда я настроил запрос в Excel, я смог обойти выбор таблицы и просто написать запрос напрямую, но он также не показал нужную мне таблицу в списке доступных таблиц.

Изменить по запросу Парфе:

Рабочий запрос в Excel:

select distinct
SupLookup.Sup_Num,
suplookup.CONTAINER_CODE,
AllocationType.ALLOC_TYPE_DESC,
Allocation.ALLOC_QTY,
Allocation.SAFE_STOCK_QTY,
Allocation.ALLOC_QTY + Allocation.SAFE_STOCK_QTY AS TOT_ALLOC_REQ_QTY

from RCX.RXSAL1 Allocation
inner join rcx.RXALT1 AllocationType on Allocation.ALLOC_TYPE_ID = AllocationType.ALLOC_TYPE_ID
left join
(select distinct
    SUPPLIER_ID,
    concat(SUPPLIER_NO, SUPPLIER_LOCATION) as Sup_Num,
    CONTAINER_CODE,
    CONTAINER_TYPE_ID
from rcx.RXPIR1    
where PLANT_ID= '00000001'
) as SupLookup on Allocation.SUPPLIER_ID = suplookup.SUPPLIER_ID and allocation.CONTAINER_TYPE_ID = suplookup.CONTAINER_TYPE_ID

where Allocation.PLANT_ID= '00000001'

ORDER BY Sup_Num ASC

Строка подключения в Excel:

DSN=MyDSN;UID=UserName;PWD=Password;MODE=SHARE;DBALIAS=MyDSN;SCHEMALIST='ARS','BOM','DBA','FCS','HR','INT','INV','LCA','LCT','LCZ','PCA','PCM','PCT','PTN','PUR','QCA','QCM','QCT','QCW','QXX','TIX','TSS','UCX','WAR';

Редактировать 2:

Запрос в Excel вводится следующим образом:

Вкладка «Данные» -> Выбрать из других источников: Из запроса Microsoft в разделе «Получить внешние данные» -> Подключиться к DSN из списка -> ввести имя пользователя и пароль -> Закрыть диалоговое окно «Выбор столбцов» -> Сказать «Да», чтобы продолжить редактирование в запросе MS -> закрыть диалоговое окно выбора таблиц -> нажмите кнопку SQL в запросе MS, чтобы просмотреть SQL -> вставить в запрос -> нажмите кнопку ОК -> нажмите кнопку «Возврат данных» в запросе MS -> выберите место для результатов.

Затем выполняется запрос и помещает данные в электронную таблицу. Кнопка Подключения на вкладке данных позволяет получить свойства для этих запросов, включая строку подключения.

...