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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2014, 16:35   #1
Nekala
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 25
По умолчанию Заполнение editov из БД

Помогите, пожалуйста исправить ошибку. Есть две таблицы. вот схема данных

Снимок.PNG
Сделала код на событие ONDblClick на DBGrid. Но работает неправильно. То, что из таблицы Itog в edit заносит правильно, а все, что должно быть из таблицы Resultat, заносится всегда только первая строка из таблицы, независимо что я выбрала в дбгриде. Помогите, пожалуйста, разобраться
Код:
Form9.Show;
  Form9.Edit6.Text:=DBGrid1.Fields[0].AsString;
  Form9.Edit20.Text:=DBGrid1.Fields[1].AsString;
  Form9.ComboBox2.Text:=DBGrid1.Fields[2].AsString;
  Form9.ComboBox1.Text:=DBGrid1.Fields[3].AsString;
  Form9.Edit14.Text:=DBGrid1.Fields[4].AsString;
  Form9.Edit16.Text:=DBGrid1.Fields[5].AsString;
  Form9.Edit18.Text:=DBGrid1.Fields[6].AsString;
  Form9.Edit19.Text:=DBGrid1.Fields[7].AsString;
 
  Form9.Edit24.Text:=DataModule2.ADOTable3.FieldByName('Rost').AsString;
  Form9.Edit25.Text:=DataModule2.ADOTable3.FieldByName('Ves').AsString;
  Form9.Edit7.Text:=DataModule2.ADOTable3.FieldByName('PZ').AsString;
  Form9.Edit8.Text:=DataModule2.ADOTable3.FieldByName('PP').AsString;
  Form9.Edit9.Text:=DataModule2.ADOTable3.FieldByName('BV').AsString;
  Form9.Edit10.Text:=DataModule2.ADOTable3.FieldByName('BN').AsString;
  Form9.Edit21.Text:=DataModule2.ADOTable3.FieldByName('Jivot').AsString;
....................................................;
end;

Последний раз редактировалось Stilet; 10.12.2014 в 19:45.
Nekala вне форума Ответить с цитированием
Старый 10.12.2014, 17:58   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

с чем связан DBgrid (DbGrid->DataSource ->DataSet)?
Цитата:
То, что из таблицы Itog в edit заносит правильно,
видимо тот самый Itog.

Цитата:
а все, что должно быть из таблицы Resultat, заносится всегда только первая строка из таблицы,
То что вы указали связи в схеме Access недостаточно для автоматического перехода.

чтобы заносилась нужная нужно НАСТРОИТЬ набор данных(ADOTable3) на ТРЕБУЕМУЮ. Для этого используется метод Locate.

А лучше отказаться от ADOTable и перейти к ADOQuery.
Использовать SQL и сразу получать ЕДИНЫЙ набор данных с информацией из нескольких таблиц.
Или пойти путем использования РАНЕЕ подготовленных запросов в Access с использованием тех же нескольких таблиц (по сути тот же SQL но с возможностью "визуального" конструктора и "автоматическим" применением информации о связях).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 10.12.2014 в 18:02.
evg_m вне форума Ответить с цитированием
Старый 10.12.2014, 18:06   #3
Nekala
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 25
По умолчанию

Использовать AdoQuery не проблема. .А как дальше вывод в едиты осуществить? Примерный код можете подсказать, если я буду использовать адоквери ?
Nekala вне форума Ответить с цитированием
Старый 10.12.2014, 19:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А как дальше вывод в едиты осуществить?
А что ты хочешь на экране получить?
Я правильно понимаю: Кликнув в одной таблице в другой нужны связанные с кликнутой записи и только они?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.12.2014, 04:14   #5
Nekala
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 25
По умолчанию

Кликнув по одной таблице, открывается окно с editами. И вот эти едиты заполняются данными из кликнутой записи и записи из другой таблицы.

вот запрос сделала:
Код:
SELECT 
 Rezultat.FIO, 
 Rezultat.Rost, 
 Rezultat.Ves, 
 Itog.Vozrast, 
 Pol.Pol,
Gruppa.Name_Gruppa 
FROM Gruppa
 INNER JOIN (Pol 
  INNER JOIN (Rezultat 
   INNER JOIN Itog ON Rezultat.Id_FIO = Itog.Id_FIO) 
  ON Pol.Id_Pol = Itog.Id_Pol) 
 ON Gruppa.Id_Gruppa = Itog.Id_Gruppa;

Последний раз редактировалось Stilet; 11.12.2014 в 07:42.
Nekala вне форума Ответить с цитированием
Старый 11.12.2014, 07:43   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так точно так же как в в топе, только имя компонента меняется:
Код:
Form9.Edit24.Text:=DataModule2.ADOQueryБлаБла.FieldByName('Rost').AsString;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.12.2014, 15:39   #7
Nekala
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 25
По умолчанию

Сделала так:
Form9.Edit6.Text:=DataModule2.Vivod _Redakt.FieldByName('FIO').AsString ;
Form9.Edit20.Text:=DataModule2.Vivo d_Redakt.FieldByName('Vozrast').AsS tring;
Form9.ComboBox2.Text:=DataModule2.V ivod_Redakt.FieldByName('Pol').AsSt ring;
Form9.ComboBox1.Text:=DataModule2.V ivod_Redakt.FieldByName('Name_Grupp a').AsString;
Form9.Edit24.Text:=DataModule2.Vivo d_Redakt.FieldByName('Rost').AsStri ng;

Но все равно только первая запись таблицы записывается в едиты((
Nekala вне форума Ответить с цитированием
Старый 11.12.2014, 17:47   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Но все равно только первая запись таблицы записывается в едиты((
Цитата:
чтобы заносилась нужная нужно НАСТРОИТЬ набор данных(ADOTable3) на ТРЕБУЕМУЮ. Для этого используется метод Locate.
Только конечно не ADOTable3 а соответствующий ADOQuery.

Ну или (и правильнее будет если уж взяли ADOQuery) использовать
- фильтр select ... where id_fio=:f
и параметры ADOQuery.ParamByName('f).value:=...
чтобы в набор попала только нужная.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 11.12.2014 в 17:50.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение listbox значениями из массива. Заполнение массива. Gnaqeaz C# (си шарп) 9 23.10.2014 07:53
Заполнение ячеек 3dvol Microsoft Office Excel 2 18.07.2012 22:36
Заполнение форм Marsik JavaScript, Ajax 1 17.11.2009 17:30
Заполнение матрицы -=aHTPoПоС=- Помощь студентам 3 06.11.2009 17:33
ЗАПОЛНЕНИЕ БД Лонли-Локли БД в Delphi 4 26.08.2009 14:54