Я пытаюсь связать таблицу 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 -> выберите место для результатов.
Затем выполняется запрос и помещает данные в электронную таблицу. Кнопка Подключения на вкладке данных позволяет получить свойства для этих запросов, включая строку подключения.