|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Как правильно создать запрос по поиску в базе 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; Поиск работает корректно, однако при внесении изменений в сформировавшуюся таблицу появляется ошибка: Delphicode.org - справочник Delphi |
#2
|
|||
|
|||
Все правильно. Она (оно) просто не может определить какую таблицу ты хочешь обновить. Вообще, обновление по результату сложных запросов не работает в 99% случаев. Делай обновление "руками".
|
#3
|
||||
|
||||
Цитата:
А как помочь определить? Обновление руками - подскажите хоть примерно Delphicode.org - справочник Delphi |
#4
|
||||
|
||||
В результате запроса формируется у вас не таблица а виртуальный набор данных. У вашего набора должны быть два поля которые однозначно определяют исходную таблицу и идентификатор записи в этой таблице. Тогда используя эти сведения из текущей записи можно выполнить отдельно запрос на изменение уже в конкретной таблице, но на текущий виртуальный набор данных это никак не повлияет, надо будет решать еще и эту проблему.
Имейте ввиду, что если вы не используете ключевого слова ALL в UNION у вас будет сформирован уникальный набор данных, из которого будут исключены все повторяющиеся записи. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
Цитата:
Так все-таки как это реализовать? Есть ли у Вас примерчик глянуть? Delphicode.org - справочник Delphi |