Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 23:17   #1
Хитрец
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 48
По умолчанию SQL запрос для поиска в связаных таблицах.

Как задать запрос на поиск если таблицы связаны, но не находятся в одной базе?

Т.Е. На форме лежат два ADOConnection, два ADOQuery и два DataSourse.

Один комплект подключен к DB1.mdb, а второй к DB2.mdb. И в ADOQ1 добавлены поля по lookup из ADOQ2 контачат по Key1 -> LKey.

Не могу задать запрос на поиск в ADOQ1 полей добавленых из ADOQ2.

Выдает ошибку типа: Параметр "НАЗВАНИЕ ПОЛЯ" не является значением по умолчанию.

пишу стандартно

DataModule1.ADOQ1.SQL.ADD('SELECT *');
DataModule1.ADOQ1.SQL.ADD('FROM [База заказов]');
DataModule1.ADOQ1.SQL.ADD('WHERE Фамилия LIKE ''%' + (Edit1.Text) +'%''' );

Поле фамилия добавлено из ADOQ2.

может кто подскажет?
Хитрец вне форума Ответить с цитированием
Старый 16.04.2009, 23:46   #2
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

создай в одной базе представление на таблицу из другой, и работай только с одной (если конечно в Access есть такое).
хотя всеравно, то что записано в тексте запроса ищется в самой базе, а связал ты эти таблицы не там, а в проге, так что поиск придется осуществлять не запросом, а средствами компонентов (непомню есть ли такое в ADO, но например в ClientDataSet есть свойство Filter).
Кстати а почему б ы тебе не использовать ClientDataSet, так проще, вначале пргои загрузил в него данные из двух баз, в процессе работаешь в только с ним одним, а в конце просто распихиваешь изменения по базам
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)

Последний раз редактировалось koma_grusha; 16.04.2009 в 23:54.
koma_grusha вне форума Ответить с цитированием
Старый 17.04.2009, 09:02   #3
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Посмотри вот эту тему
http://programmersforum.ru/showthread.php?t=45417, может наталкнет на мысль.
А вообще как сказал koma_grusha сделай в Access связные таблицы, тогда тебе не нужно будет второе подключение.
S@fer вне форума Ответить с цитированием
Старый 17.04.2009, 22:30   #4
Хитрец
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 48
По умолчанию

Неужели нельзя осуществить запрос, если таблицы находятся в двух разных файлах?

Последний раз редактировалось Хитрец; 18.04.2009 в 00:12.
Хитрец вне форума Ответить с цитированием
Старый 18.04.2009, 01:42   #5
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Хитрец, а нельзя импортировать таблицы из одной бд в другую? и гемора было бы меньше и стабильность работы лучше была бы.
фЁдОр вне форума Ответить с цитированием
Старый 18.04.2009, 02:02   #6
Хитрец
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 48
По умолчанию

Сделать это можно, но хотелосьбы оставить две независымые базы. Просто очень странно должет же быть способ работать с одтельными базами по sql запросам...

Правда чёто инфы по этому вопросу ноль.

Может есть какой вертуальный способ объединения, чтобы программа вроде как считала, что база находится в одном файле?
Хитрец вне форума Ответить с цитированием
Старый 18.04.2009, 02:30   #7
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Вероятнее всего ошибка Параметр "НАЗВАНИЕ ПОЛЯ" не является значением по умолчанию выдается потому что данного поля AdoQuery просто не видит (для него оно может не существовать если не прописано в Fields Editor, бывает если нарушен порядок следования полей в запросе). Поэтому проверь сначала в SQL запросе порядок следования полей (как в базе Access), а уже потом добавляй в Field Editor. Может покажется странным, но сталкивался с таким.
Ошибка выдаваемая тебе при запросе (где говорится о параметрах) никакого отношения к ним наверное не имеет, просто это говорит о несуществовании данного поля, поэтому он думает, что это параметр.
Данный код должен работать:
Код:
  AdoQ1.Close;
  AdoQ1.SQL.Clear;
  AdoQ1.SQL.Add('select Table1.kod, Table1.key1, Table2.Kod, Table2.fam ');
  AdoQ1.SQL.Add('From [DB1.mdb].Table1, [DB2.mdb].Table2 ');
  AdoQ1.SQL.Add('WHERE fam LIKE '+quotedstr('%'+Edit1.Text+'%'));
  AdoQ1.Open;
Во всяком случае ошибок про параметры не выдавал...
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 18.04.2009, 02:35   #8
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Если несложно просто сделай проект (шаблон) в Дельфи 7 и размести на форуме. Базы Access естественно пустые, и ничего лишнего, только комноненты для связи с базами и твой вариант запроса, который не получается и в комментариях, что именно хочется получить.
Тогда наверное получше будет понять в чем ошибка.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 18.04.2009, 10:01   #9
Хитрец
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 48
По умолчанию

То что ты написал подходит только если обе баз находятся в одном файле, у меня же др. ситуация файлов баз две. И

Вот примерчик нужно произвести сортировку(ПОИСК) по полю ИМЯ в ADOQuery1.
Вложения
Тип файла: zip TEST SQL.zip (553.4 Кб, 19 просмотров)

Последний раз редактировалось Хитрец; 18.04.2009 в 10:03.
Хитрец вне форума Ответить с цитированием
Старый 18.04.2009, 11:29   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Хитрец, а что если поступить так:
создать третью БД, где первые две вставить как связанные!
и дальше работать через эту третью БД.

p.s. самому проверять сейчас некогда — надо яйца красить, к Пасхе готовиться..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Организация корректного поиска в связанных таблицах посредством SQL в Delphi Krechet БД в Delphi 9 10.04.2009 16:40
Поиск в 2-ух таблицах через запрос icome Microsoft Office Access 3 26.08.2008 18:14
Как редактировать дату в связаных таблицах ADO Alexsandr БД в Delphi 1 27.05.2008 09:38
Синтаксис SQL-запроса для поиска по дате... Рустам БД в Delphi 13 06.04.2008 15:55
Удаление в связаных таблицах ADO Alexsandr БД в Delphi 7 18.02.2008 23:15