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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2009, 22:08   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Как правильно создать запрос по поиску в базе Access?

Пытаюсь решить следующий вопрос, есть база данных Access data.mdb, в этой базе находится N-е кол-во таблиц (одинаковых по структуре). Необходимо произвести поиск по всем таблицам (по фамилии) и выдать результат в ADOQuery. Написал код:

Код:
datasource1.dataset:=AdoQuery1;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
with ADOQuery1.SQL do begin
  Add('SELECT * FROM MASTER where Name like ''' +'%'+Edit2.Text + '%''');
  Add(' UNION ');
  Add('SELECT * FROM COFF where Name like ''' +'%'+Edit2.Text + '%''');
  Add(' UNION ');
  Add('SELECT * FROM 2OFF where Name like ''' +'%'+Edit2.Text + '%''');
  Add(' UNION ');
  Add('SELECT * FROM 3OFF where Name like ''' +'%'+Edit2.Text + '%''');
  Add(' UNION ');
  Add('SELECT * FROM CENG where Name like ''' +'%'+Edit2.Text + '%''');
  Add(' UNION ');
  Add('SELECT * FROM 2ENG where Name like ''' +'%'+Edit2.Text + '%''');
end;
ADOQuery1.Open;
Поиск работает корректно, однако при внесении изменений в сформировавшуюся таблицу появляется ошибка:

Dux вне форума Ответить с цитированием
Старый 03.05.2009, 11:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну так и должно быть.
Не надо изменять данные в результатах запроса, полученного из разных таблиц через UNION!
Если изменяется значение, то откуда Access будет знать, в какую таблицу его сохранять?!!
Похоже, Вам надо менять идеологию (или вводить промежуточную (сводную) таблицу, а потом её (в случае изменений) распихивать обратно по исходным таблицам... это муторно и достаточно сложно... Оно Вам надо?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.05.2009, 13:37   #3
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

возможно,имеет смысл слить все таблицы в одну, и добавить дополнительный столбец, в который писать признак(по которому они раскидывались в разные таблицы).
rocklistener...
5naip вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать перекрестный запрос в С#? Etlau Общие вопросы .NET 0 26.04.2009 16:07
Как добавить "значение по умолчанию" в базе Access? bafy БД в Delphi 6 13.02.2009 12:29
Как создать запрос с использованием данных из combobox ксона БД в Delphi 9 13.12.2008 16:52
Как создать перекресный запрос в QR??? Tanuska___:) БД в Delphi 0 22.09.2008 11:13
Создать таблицу Access в существующей базе. Nowichok БД в Delphi 6 10.02.2007 18:32