вписывать и обрабатывать тексты в dbgrid

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

вписывать и обрабатывать тексты в dbgrid

Сообщение jenny » 25.05.2015 22:58:23

Всем привет,
я бы хотела вписывать и обрабатывать тексты в компоненте dbgrid. Возможно ли это и как это лучше всего сделать?
Для подключения к базе данных я использую zeos компоненты. На моём "Form1" находятся: ZConnection, ZQuery, Datasource, DBGrid.

Заранее спасибо :D
jenny
новенький
 
Сообщения: 59
Зарегистрирован: 25.05.2015 22:45:27

Re: вписывать и обрабатывать тексты в dbgrid

Сообщение Vadim » 27.05.2015 15:08:51

jenny
Именно в DbGrid ничего вписывать нельзя, т.к. он только отображает содержимое ZQuery.
Вам нужно в компоненте ZQuery добавить специальный запрос изменения данных. К примеру, у Вас в ZQuery содержится запрос на выборку данных:
Код: Выделить всё
ZQuery.SQL.Text:='SELECT fld1, fld2, fld3 FROM table1'

Обращаю Ваше внимание, что одно из полей в этой выборке должно быть ключевым, т.е. однозначно идентифицировать выбранную запись, т.к. именно по этому ключевому полю будудт в дальнейшем изменяться данные конкретной записи. Само ключевое поле в DbGrid'е отображать необязательно. Для простоты условимся, что ключевое поле - fld1.
Теперь нужно заполнить свойство отвечающее за изменение данных в ZQuery. Для этого на форму нужно положить компонент ZUpdateSQL и внести его название в ZQuery.UpdateObject.
В ZUpdateSQL нужно заполнить свойство для изменения данных:
Код: Выделить всё
ZQpdateSQL.ModifySQL:='UPDATE table1 SET fld2=:fld2, fld3=:fld3 WHERE fld1=:fld1'

В данном случае :fld1, :fld2, :fld3 это автоматически создаваемые параметры запроса, содержащие изменённые данные, которые Вы будете менять через DbGrid. Не обязательно менять их все и уж что точно не нужно изменять, так это данные в ключевом поле fld1, т.к. именно по нему будет происходить поиск записи в таблице БД.
Внесённые изменения нужно "закрепить" в базе данных с помощью методов:
ZQuery.ApplyUpdates;
ZQuery.CommitUpdates;

Эти методы применяются после того, как все изменения в таблице Вы уже сделали.
Для ввода новой записи в таблицу Вам понадобится свойство ZQpdateSQL.InsertSQL, а для удаления ZQpdateSQL.DeleteSQL с соответствующими командами в них.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 226

Рейтинг@Mail.ru