|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Поиск записи в таблице
С Рождеством всех уважаемые программисты!
Нужна Ваша помощь. Есть база данных Access состоящая из одной главной таблицы(FIO) и несколькоми привязанными таблицами к главной по id. В главной форме моей программы отображается только главная таблица. Поиск по ФИО я осуществляю методом Locate. Код:
DBGrid1.DataSource.DataSet.Locate('Фамилия Имя Отчество', trim(Edit1.Text), [loCaseInsensitive, loPartialKey]); Это всё элементарно, т.к. ФИО находится в главной таблице и курсор при поиске перемещается к нужной записи. Но мне нужно ещё сделать поиск по номеру документа принадлежащего определённому человеку. И чтобы при нахождении этого документа курсор в главной таблице вставал напротив ФИО которому принадлежит этот документ. Вся загвоздка в том, что эти документы заносятся не в главную таблицу. Вообщем как осуществить поиск в другой таблице таким же методом Locate, а курсор чтобы переместился к фамилии этого человека в DBGride главной формы. Спасибо! |
#2
|
|||
|
|||
Не, через Locate не получится, т.к. он ищет только в локальной таблице.
Я бы сделал через запрос к таблице документов, там бы нашел ID владельца документа, а уже по этомк ID вызвал бы Locate для главной таблицы. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
vmilyoshin (06.01.2012)
|
#3
|
|||
|
|||
Цитата:
Спасибо огромное за совет! Сделал так: Код:
procedure TForm1.Edit1Change(Sender: TObject); begin try DataModule1.ADOQuery2.Active:= false; DataModule1.ADOQuery2.SQL.Clear; DataModule1.ADOQuery2.SQL.Add('SELECT [id] FROM POLIS WHERE ([Номер] = "'+trim(Edit1.Text)+'");'); DataModule1.ADOQuery2.Active:= true; finally end; if DataModule1.ADOQuery2.Fields[0].Value <> null then DBGrid1.DataSource.DataSet.Locate('Код', DataModule1.ADOQuery2.Fields[0].Value, [loCaseInsensitive, loPartialKey]); end; |
#4
|
||||
|
||||
Получится и через локейт, только надо связать таблицу документов с таблицей лиц через мастер-деталь. Тогда при поиске документа, когда установится курсор на документ, автоматом выставится и на человеке.
Собственно это почти тоже-самое, что предлагает lmikle, но используя встроенный механизм. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 07.01.2012 в 12:20. |