Конференция "Базы" » SQL запрос к двум базам Access из Делфи.
 
  • alvltss © (11.09.17 20:37) [0]
    Приветствую всех!
    Подскажите, пожалуйста, как можно сделать SQL запрос к двум базам Access из Делфи одновременно.  Не понимаю как в один  ADOQuery "впихнуть" вторую базу и выбрать из нее значения по соответсвующим полям из результата запроса к первой.
    Буду признателен за подсказки/примеры.
  • sniknik © (11.09.17 21:22) [1]
    Предложение IN
    Определяет таблицы в любой внешней базе данных, с которой ядро базы данных Microsoft Jet может установить связь, например в базе данных dBASE, Paradox или внешней базе данных с ядром Microsoft® Jet.

    Синтаксис
    Чтобы определить результирующую таблицу:

    [SELECT | INSERT] INTO назначение IN
       {путь | ["путь" "тип"] | ["" [тип; DATABASE = путь]]}

    Чтобы определить исходную таблицу:

    FROM выражение IN
       {путь | ["путь" "тип"] | ["" [тип; DATABASE = путь]]}

    Ниже перечислены аргументы инструкции SELECT, содержащей предложение IN:
  • TohaNik © (15.09.17 12:08) [2]

    > sniknik ©   (11.09.17 21:22) [1]
    > Предложение IN

    Круто!

    > alvltss ©   (11.09.17 20:37) 

    Забей:)
  • alvltss © (17.09.17 07:48) [3]
    В общем, попробовал но нифига не получается. Например, простой запрос

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

    выдает ошибку "Источник данных не найден и не указан драйвер, используемый по умолчанию", хотя все это прописано.
    Кроме того, выскакивает окно авторизации. Как его отключить в строке подключения непонятно.
    Если выполнить это запрос при подключенной базе, то выскакивает ошибка "Неправильно определен объект Parameter. Представлены несогласованные или неполные сведения"
    Как это все победить?
  • sniknik © (17.09.17 16:52) [4]
    > Как это все победить?
    справку почитать как же еще... полную, для Jet.

    > выдает ошибку "Источник данных не найден и не указан драйвер, используемый по умолчанию", хотя все это прописано.
    хрень прописана.
    тут даже из приведенного кусочка справки ясно, что твой "простой запрос" кривой, не соответствует ...
    {путь | ["путь" "тип"] | ["" [тип; DATABASE = путь]]}
    вот где например тут слово Provider? и вообще сказано что тут полная строка подключения для ado-шного драйвера?
  • sniknik © (17.09.17 16:59) [5]
    > Select * from Logs  IN [Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Config.mdb; Persist Security Info=False;]

    Select * from Logs  IN "D:\Config.mdb"
  • alvltss © (20.09.17 19:11) [6]
    Спасибо тебе, мил человек :)   Помогло, буду ковырять дальше...
  • alvltsss (26.09.17 07:37) [7]
    Сделал такой запрос

    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. Но тоже не совсем понятно, с полным путем указывать или как?
    Подскажите, кто может, плиз....
 
Конференция "Базы" » SQL запрос к двум базам Access из Делфи.
Есть новые Нет новых   [134427   +34][b:0][p:0]