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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2008, 13:53   #1
Fantom
Пользователь
 
Аватар для Fantom
 
Регистрация: 10.05.2008
Сообщений: 41
По умолчанию Обмен данными между компонентом Edit и БД

Есть БД Access. С нею связан экзэшник, представляющий обычную телефонную книгу. ФИО, телефон, адрес и т.д. выводятся в таблице DBGrid, расположенной на главной форме. Таблица DBGrid связана с компонентом DataSource,компонент DataSource с DataTable, компонент DataTable-с ADOConnection. Строки в таблице DBGrid не редактируются, а только отображаются. Для редактирования строки (ФИО, телефон, адрес и т.д.) выделяем требуемую строку и нажимаем кнопку редактировать. Появляются форма для редактирования. В ней расположены обычные компоненты Edit(не DBEdit!!!). Edit1-Фамилия, Edit2-телефон, Edit3-адрес и т.д.
1)Как сделать, чтобы когда пользователь введет требуемую ФИО, телефон, адрес можно, нажав кнопку Сохранить, сохранить строки из полей Edit1, Edit2, Edit3 в редактируемую строку базы данных?
2)И обратная задача, как сделать так чтобы в эти поля Edit1, Edit2, Edit3 и т.д. выводилась соответствующая информация(ФИО, адрес, телефон) выделенной в DBGrid строки?

Последний раз редактировалось Fantom; 10.09.2008 в 13:59.
Fantom вне форума Ответить с цитированием
Старый 10.09.2008, 14:15   #2
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

Книги читал какие-то по работе с бд?
в любой книге про это написано
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 10.09.2008, 14:16   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

При клике по кнопке редактировать
Код:
frmEdit.FIOedit.Text:=TableFIO.Value;
и т.д.
При клике сохранить
Код:
frmMain.Table.Edit;
frmMain.Table.FieldByName('FIO').asString:=FIOedit.Text;
//или frmMain.Table.Fields[x].asString:=FIOedit.Text; где x - номер поля.
frmMain.Table.Post;
frmEdit.Close;
_SERGEYX_ вне форума Ответить с цитированием
Старый 10.09.2008, 14:26   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Во первых почему бы тебе не использовать DBEdit тогда бы отпали лишние проблемы, но уж если не хочится их использовать то можно следующим образом
Код:
ADOTable1.Insert//добавить
ADOTable1.Edit//редактировать
ADOTable1.FieldByName('ФИО').Value:=Edit1.Text;
......//так для всех полей
ADOTable1.Post;
а для обратного отображения
Код:
Edit1.Text:=ADOTable1.FieldByName('ФИО').Value
SERG1980 вне форума Ответить с цитированием
Старый 10.09.2008, 16:21   #5
Fantom
Пользователь
 
Аватар для Fantom
 
Регистрация: 10.05.2008
Сообщений: 41
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
Код:
ADOTable1.Insert//добавить
ADOTable1.Edit//редактировать
ADOTable1.FieldByName('ФИО').Value:=Edit1.Text;
......//так для всех полей
ADOTable1.Post;
а для обратного отображения
Код:
Edit1.Text:=ADOTable1.FieldByName('ФИО').Value
То, что мне нужно!!! Спасибо!!!
Цитата:
Сообщение от SERG1980 Посмотреть сообщение
...почему бы тебе не использовать DBEdit тогда бы отпали лишние проблемы
Понимаешь в чём дело, когда я ввожу в поле DBEdit1(ФИО), то данные автоматически сохраняются в базе, если я даже не нажимал кнопку Сохранить на форме редактирования. А мне нужно, чтобы если я даже и ввел что-нибудь в поле DBEdit, то при отсутствии нажатия на кнопке Сохранить, ничего не изменилось бы.
Fantom вне форума Ответить с цитированием
Старый 10.09.2008, 16:25   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

У компонента DataSource св-во AutoEdit поставьте в false и не должно быть такого
SERG1980 вне форума Ответить с цитированием
Старый 11.09.2008, 11:52   #7
Fantom
Пользователь
 
Аватар для Fantom
 
Регистрация: 10.05.2008
Сообщений: 41
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
У компонента DataSource св-во AutoEdit поставьте в false и не должно быть такого
В таком случае вообще нельзя редактировать в поле DBEdit.
Fantom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обмен данными между формами Maks1978 Общие вопросы C/C++ 3 22.07.2008 15:35
Обмен данными между формами Demien Общие вопросы Delphi 14 23.04.2008 22:04
Обмен данными по сети Altera Работа с сетью в Delphi 2 23.02.2008 00:13
Обмен сообщениями между IdTcpClient и idTcpServer Teen4jump Работа с сетью в Delphi 3 05.09.2007 09:25
обмен данными с сервером BioS Работа с сетью в Delphi 15 12.02.2007 15:32