![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Подскажите кто уже это проходил.
Можно ли выполнить запрос к таблицам разных бд. есть база данных VFXP (*.dbf) и временна база данных на PARADOX (*.db)нужно обратится запросом к полям этих таблиц и получить разность. запрос примерно такой ADOQuery1.SQL.Add('select j from base.db,base.dbf where j<>keyforbank and datepay='''+dateform+'''') |
#2
|
||||
|
||||
![]() да, такие вещи выполнимы.
запрос примерно такой: Код:
ADOQuery1.SQL.Text:='select j from base.db b1,base.dbf b2 where b1.j<>keyforbank and b2.datepay='''+dateform+''' and b1.key=b2.key' Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#3
|
||||
|
||||
![]() Курите поиск по "гетерогенные запросы".
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
![]() Цитата:
|
#5
|
||||
|
||||
![]() VINCENT, если через разные драйверы обращаетесь к базам - то нельзя одновременно.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#6
|
|||
|
|||
![]() В том то и вопрос как сравнить таблицы используя разное подключение к ним.
|
#7
|
||||
|
||||
![]() Создать 2 временные таблицы (подключенных через 1 (один) драйвер), по очереди залить из них данные из имеющихся, потом сделать запрос.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#8
|
|||
|
|||
![]() НУ так то понятно что можно выгрузить даныые или перечитать с запроса по записям . Тут хотелось бы грамотно подойти к вопросу и оптимально решить задачу без ущерба к производительности.
Ищу методы так как опыта программирования 2 недели ![]() А нельза сравнить данные не создавая ничего лишнего например из хранимаого курсора в памяти. допустим Код:
query1.sql.add('sect j from ":test:te.db"'); query1.open ADOQuery1.sql.add('slect keyforbank from testdb where datepay=:dats'); ADOQuery1.Open; |
#9
|
|||
|
|||
![]() Цитата:
Цитата:
|
#10
|
||||
|
||||
![]() Немного добавлю к предыдущему оратору и напомню что я говорил ранее.
Сама среда Delphi не работает с базами данных, за нее это делают так называемые "движки", и если один движок не умеет цепляться к другому (BDE - точно не умеет, с ADO я не уверен на 100%) то ты никак, повторяю НИКАК не получишь гетерогенного запроса. Теперь о том что я говорил выше. Сливать данные можно и в таблицу в памяти, сейчас много всяких MemTable по сети валяется, юзай их. Ну это если записей в таблице разумное количество. ЗЫЖ А вообще-то хотелось бы узнать задачу более полнее, чтоль. Может быть есть решение совсем другим способом. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#11
|
|||
|
|||
![]() чето долго думал.... решил привести все к общему знаминателю, а именно выбрал запросом данные из dbf и записал их во временную таблицу, птом сравнил с первой каторя db
сам запрос получился такого характере может кому пригодится хотя во многих местах уже описан этот метод. Код:
Query2.close; Query2.SQL.clear; Query2.SQL.Add('select j from ":bank:te.db" AS T1 LEFT JOIN ":bank:temp.db" AS T2 ON T1.j=T2.kluch WHERE T2.kluch IS NULL'); Query2.Open; |