Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > 2 таблицы


Автор: Devostator 13.5.2010, 19:22
Есть две таблицы:
http://ipicture.ru/
http://ipicture.ru/
Есть форма:
http://ipicture.ru/

Как сделать так, чтобы при введении идентификационного номера (id_StudentKey) и нажатии кнопки ОК, в ComboBox'е выводились название предметов (id_Predmet). Сравнение идет по id_PredmetKey двух таблиц.
Т.е. для Иванова должны выйти ТГП и Философия.
Заранее благодарен.

Автор: former 13.5.2010, 19:39
Было бы неплохо написать про компоненты доступа.
В любом случае читай про связку master-detail.

Автор: Devostator 13.5.2010, 19:44
Компоненты АDOConnection, AdoQuery1, AdoQuery2, DataSourse1, DataSourse2, DBGrid1, DBGrid2. 

Автор: former 13.5.2010, 21:33
Цитата(Devostator @  13.5.2010,  19:44 Найти цитируемый пост)
Компоненты АDOConnection, AdoQuery1, AdoQuery2, DataSourse1, DataSourse2, DBGrid1, DBGrid2.  

 smile ADO было бы достаточно.

Пусть AdoQuery1,DataSourse1 - PredmetFirst и AdoQuery2,DataSourse2 - StudentFirst.
У AdoQuery2 указываешь в качестве DataSource - DataSourse1 . Настраиваешь master-detail. Вместо ComboBox используй LookupComboBox. Его привяжи к DataSourse2. Для поиска используй Locate или параметры запроса. Все.

Автор: Devostator 13.5.2010, 23:00
Не осилил. Что такое master-detail? Что за Locate?
 У меня вот так получилось, нахимичил  smile :
if EdID.Text<>'' then
begin
Query1.SQL.Clear;
Query1.SQL.Add('SELECT id_StudentFio, id_StudentGroup, id_PredmetKey FROM StudentFirst WHERE id_StudentKey='+EdID.Text);
Query1.Active:=true;
Query2.SQL.Clear;
Query2.SQL.Add('SELECT id_Predmet, id_PredmetActive FROM PredmetiFirst Where id_PredmetKey='+Query1.FieldByName('id_PredmetKey').AsString);
Query2.Active:=true;

 PredmetBox.Clear;
 Query2.First;
  while not Query2.eof do
  begin
  if Query2.FieldByName('id_PredmetActive').AsInteger=0 then
  begin
      PredmetBox.Items.Add(Query2.FieldByName('id_Predmet').value);
  end;
      Query2.Next;
  end;
lblFio.Caption:=Query1.FieldByName('id_StudentFio').AsString;
lblGroup.Caption:=(Query1.FieldByName('id_StudentGroup').AsString)+' группа';
end;
end;

Добавлено @ 23:02
http://ipicture.ru/


Я тут еще сделал проверку на id_PredmetActive (сдавал ли он этот предмет или еще не сдавал).

Автор: former 14.5.2010, 11:04
Цитата(Devostator @  13.5.2010,  23:00 Найти цитируемый пост)
Не осилил. Что такое master-detail? Что за Locate?

Что именно? Ты хоть одну книгу открывал? Это основы основ!

Автор: Akella 14.5.2010, 23:14
на лекции надо было ходить

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)