Консультация № 171895
04.09.2009, 12:36
0.00 руб.
06.09.2009, 18:19
0 5 1
Здравствуйте.
Есть DBGrid, выводящий данные из базы Access. Как считывать и редактировать отдельные поля каждой строки?(Delphi 7)
--------------------------------------------------------------------------------
Добавлено из мини-форума для прояснения вопроса:
На форме есть компненты - TEdit(его думаю заменю на DBEdit),MaskEdit, Memo,MonthCalendar. Нужно по нажатию кнопки занести значения этих полей в DBGrid(базу Access).
Как напрямую из DBEdit я знаю,а с других как-то по-другому, вот и спрашиваю как? Считывать эти значения(одной строки по запросу пользователя) нужно, чтобы в отдельном окне в отдельных полях их редактировать(через DBGrid не очень удобно)
--------------------------------------------------------------------------------

Обсуждение

давно
Мастер-Эксперт
425
4118
04.09.2009, 12:56
общий
Sager:
Если Вам нужно смотреть и редактировать только одно поле только одной строки, то более удобно пользоваться DBEdit, а не DBGrid.
А в общем-то вопрос непонятен. Какие именно у Вас возникли проблемы? Ведь и считывание и редактирование данных должно производиться без каких либо специфических настроек DBGrid'а.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Профессионал
153662
1070
04.09.2009, 13:17
общий
Вопрос действительно непонятный. Я к примеру делаю так
Код:
 DBGrid1.Fields[1].Value:= dm.ADOQuery2.Fields.Fields[0].Value; // Присвоить значение поля 0 запроса полю 1 таблице
.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Специалист
742
345
05.09.2009, 08:08
общий
На форме есть компненты - TEdit(его думаю заменю на DBEdit),MaskEdit, Memo,MonthCalendar. Нужно по нажатию кнопки занести значения этих полей в DBGrid(базу Access).
Как напрямую из DBEdit я знаю,а с других как-то по-другому, вот и спрашиваю как? Считывать эти значения(одной строки по запросу пользователя) нужно, чтобы в отдельном окне в отдельных полях их редактировать(через DBGrid не очень удобно)
давно
Профессионал
153662
1070
05.09.2009, 10:16
общий
Если у Вас для связи с базой используется ADOTable или ADOQuery, в редакторе формы делаете двойной клик по компоненту, откроется редактор, где можно добавить все поля таблицы. А уже по этим именам можно напрямую обращаться к любому полю таблицы текущей записи. Например для считывания из таблицы в компонент Memo:
Код:
Memo1.Text:= ADOTable_masterfilm.Value;
, где ADOTable_masterfilm - поле film таблицы ADOTable_master и обратно:
Код:
ADOTable_masterfilm.Value:= Memo1.Text;
. Аналогично и для других компонентов.

Если помог оформлю как ответ.

Или для сетки
Код:
DBGrid1.Fields[1].Value:= Memo1.Text;
Memo1.Text:= DBGrid1.Fields[1].Value;
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Профессионал
153662
1070
05.09.2009, 19:14
общий
это ответ
Здравствуйте, Sager.
Если у Вас для связи с базой используется ADOTable или ADOQuery, в редакторе формы делаете двойной клик по ADOTable или ADOQuery, откроется редактор, где в контекстном меню нужно нажать "добавить все поля", в редактор будут добавлены все поля таблицы. А уже по этим именам можно напрямую обращаться к любому полю таблицы текущей записи. Например для считывания из таблицы в компонент Memo:

Memo1.Text:= ADOTable_masterfilm.Value;

где ADOTable_masterfilm - поле film таблицы ADOTable_master (ячейка на пересечении текущей записи таблицы (выделенная строка в сетке) и поля с названием film) и обратно:

ADOTable_masterfilm.Value:= Memo1.Text;

Аналогично и для других компонентов.
Для выбора записи в сетке можно использовать стандартный метод (компонент навигатор) или делать поиск по любому полю средствами ADOTable, ADOQuery.
5
Спасибо, разобрался.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Форма ответа