Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Как можно сделать SQL запрос к двум базам Access из Делфи  [new]
alvltss
Member

Откуда:
Сообщений: 11
Подскажите, пожалуйста, как можно сделать SQL запрос к двум базам Access из Делфи одновременно. Не понимаю как в один ADOQuery "впихнуть" вторую базу и выбрать из нее значения по соответсвующим полям из результата запроса к первой.
Буду признателен за подсказки/примеры.
11 сен 17, 20:57    [20788229]     Ответить | Цитировать Сообщить модератору
 Re: Как можно сделать SQL запрос к двум базам Access из Делфи  [new]
Chippolino
Member

Откуда: изнанка
Сообщений: 1215
провайдер JET позволяет указывать ODBC источники прямо в теле запроса
так можно в одном батче скрестить бульдога с носорогом
например ексель и mssql
SELECT  a.F1,a.F2,a.F5,a.F3,a.F4,b.PG,now(),a.F9,a.F6,a.F7,a.F8
FROM (select * from [List1$A2:I] IN [Excel 12.0 xml;HDR=no;IMEX=1;DATABASE=D:\data\cervenec.xlsx]) a
inner join 
(select * from viBusinessStructure  IN [ODBC;Driver={SQL Server Native Client 10.0};Server=myServer;Database=myDatabase;Trusted_Connection=yes;]) b
on a.F4=b.FAGR
WHERE a.F1<>'Overall Result'

укажите нужные вам строки подключения в разделе IN и будет вам счастье
12 сен 17, 00:25    [20788541]     Ответить | Цитировать Сообщить модератору
 Re: Как можно сделать SQL запрос к двум базам Access из Делфи  [new]
alvltss
Member

Откуда:
Сообщений: 11
Спасибо за информацию!
Буду пробовать.
15 сен 17, 19:53    [20799875]     Ответить | Цитировать Сообщить модератору
 Re: Как можно сделать SQL запрос к двум базам Access из Делфи  [new]
alvltss
Member

Откуда:
Сообщений: 11
В общем, попробовал но нифига не получается. Например, простой запрос

Select * from Logs  IN [Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Config.mdb; Persist Security Info=False;]


выдает ошибку "Источник данных не найден и не указан драйвер, используемый по умолчанию", хотя все это прописано.
Кроме того, выскакивает окно авторизации. Как его отключить в строке подключения непонятно.
Если выполнить это запрос при подключенной базе, то выскакивает ошибка "Неправильно определен объект Parameter. Представлены несогласованные или неполные сведения"
Как это все победить?
17 сен 17, 07:35    [20801139]     Ответить | Цитировать Сообщить модератору
 Re: Как можно сделать SQL запрос к двум базам Access из Делфи  [new]
Jet,
Guest
alvltss
В общем, попробовал но нифига не получается. Например, простой запрос

Select * from Logs  IN ''[Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Config.mdb; Persist Security Info=False;]



выдает ошибку "Источник данных не найден и не указан драйвер, используемый по умолчанию", хотя все это прописано.
Кроме того, выскакивает окно авторизации. Как его отключить в строке подключения непонятно.
Если выполнить это запрос при подключенной базе, то выскакивает ошибка "Неправильно определен объект Parameter. Представлены несогласованные или неполные сведения"
Как это все победить?
вроде апострофы нужны ещё
Но это всё равно тебе не поможет, ходи по ссылке 18178978
17 сен 17, 14:12    [20801414]     Ответить | Цитировать Сообщить модератору
 Re: Как можно сделать SQL запрос к двум базам Access из Делфи  [new]
alvltss
Member

Откуда:
Сообщений: 11
Почему то те варианты у меня не работают ... не понятно почему...
Мне подсказали другой вариант-
Select * from Logs IN "D:\Config.mdb" он работает.
21 сен 17, 07:55    [20810805]     Ответить | Цитировать Сообщить модератору
 Re: Как можно сделать SQL запрос к двум базам Access из Делфи  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 741
alvltss,

В первом ответе кто-то переврал мой пост, там пустые ковычки должны быть '' после IN

Строка с драйвером нужна для источника данных, отличного от Ассесс, а с ним работает и без драйвера.
21 сен 17, 14:00    [20812235]     Ответить | Цитировать Сообщить модератору
 Re: Как можно сделать SQL запрос к двум базам Access из Делфи  [new]
alvltss
Member

Откуда:
Сообщений: 11
Сделал такой запрос

         qry_SQL.SQL.Add('select Seconds from SutvValueTable  ' );
         qry_SQL.SQL.Add ('INNER JOIN DataTable IN "Q:\Systel\Bin\Zerver.mdb"  ');
         qry_SQL.SQL.Add ('ON SutvValueTable.RegionIndex= DataTable.RegionIndex  ');
         qry_SQL.SQL.Add('AND SutvValueTable.DataIndex= DataTable.DataIndex  ');
         qry_SQL.SQL.Add (' where Seconds= (SELECT max(Seconds ) From SutvValueTable)  ');
         qry_SQL.SQL.Add('and (Status> 4095) and (Status< 8092) and (Status mod 2 = 0)  ');


Синтаксическая ошибка. Что тут не так? Может, надо как-то указать полный путь к базе в строках 2 и 3?
Также в первой строке хочу указать поле из DataTable. Но тоже не совсем понятно, с полным путем указывать или как?
Подскажите, кто может, плиз....
22 сен 17, 21:22    [20817352]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить