Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.01.2012, 22:30
vmilyoshin vmilyoshin вне форума
Прохожий
 
Регистрация: 26.10.2011
Сообщения: 15
Репутация: 10
По умолчанию Поиск записи в таблице

С Рождеством всех уважаемые программисты!
Нужна Ваша помощь. Есть база данных Access состоящая из одной главной таблицы(FIO) и несколькоми привязанными таблицами к главной по id. В главной форме моей программы отображается только главная таблица. Поиск по ФИО я осуществляю методом Locate.
Код:
DBGrid1.DataSource.DataSet.Locate('Фамилия Имя Отчество', trim(Edit1.Text), [loCaseInsensitive, loPartialKey]);

Это всё элементарно, т.к. ФИО находится в главной таблице и курсор при поиске перемещается к нужной записи. Но мне нужно ещё сделать поиск по номеру документа принадлежащего определённому человеку. И чтобы при нахождении этого документа курсор в главной таблице вставал напротив ФИО которому принадлежит этот документ. Вся загвоздка в том, что эти документы заносятся не в главную таблицу. Вообщем как осуществить поиск в другой таблице таким же методом Locate, а курсор чтобы переместился к фамилии этого человека в DBGride главной формы.
Спасибо!
Ответить с цитированием
  #2  
Старый 06.01.2012, 22:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,050
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Не, через Locate не получится, т.к. он ищет только в локальной таблице.
Я бы сделал через запрос к таблице документов, там бы нашел ID владельца документа, а уже по этомк ID вызвал бы Locate для главной таблицы.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
vmilyoshin (06.01.2012)
  #3  
Старый 06.01.2012, 23:32
vmilyoshin vmilyoshin вне форума
Прохожий
 
Регистрация: 26.10.2011
Сообщения: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Не, через Locate не получится, т.к. он ищет только в локальной таблице.
Я бы сделал через запрос к таблице документов, там бы нашел ID владельца документа, а уже по этомк ID вызвал бы Locate для главной таблицы.

Спасибо огромное за совет! Сделал так:
Код:
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  
Старый 07.01.2012, 12:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Получится и через локейт, только надо связать таблицу документов с таблицей лиц через мастер-деталь. Тогда при поиске документа, когда установится курсор на документ, автоматом выставится и на человеке.
Собственно это почти тоже-самое, что предлагает lmikle, но используя встроенный механизм.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 07.01.2012 в 12:20.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter