Редактирование в DBGrid
Вопрос который мне не даёт ночью спать.
Не могу редактировать данные в гриде.
Есть простая таблица: base.dbf
Поля: Pole1 C(10), Pole2 C(10).
Успользую стандартные компоненты:
Query1 > DataSource1 > DBGrid1
Делаю простой запрос из таблицы: SELECT * FROM base.dbf
Отображается все содержимое таблицы. Теперь самое сложное, я хочу в получившейся выборке отредактировать значение некоторых полей.
Но грид не дает мне редактировать. Замечу что у грида параметр ReadOnly=False.
Прошу не предлогать использование компонента Table1, так как для меня очень важно работать с SQL запросами. Есть еще один вариант который вы можете предложить, это по двоиному клику по записи открыть новую форму, вывести на неё значение записи, отредактировать запись и через UPDATE сохранить в базе. Это вариант без спорно хорош, не подходит так как он не совсем удобен по тем причинам что замедляется процес редактирования записей пользователем.
Я думаю что можно какимто образом редактировать в гриде, скорее всего у меня не хватает мозгов :)
Заранее всем спасибо за ваши мысли, идеи и предложения.
ну а что мысли, Кэнту (автор книг по дельфи) например прекрасно объясняет, как можно редактировать БД из DBGrid. Зачем я буду копировать оттуда информацию - скачай и почитай. И заснешь той же ночью. :)
Помогите, умираю от безсонницы
ну тогда единственный выход - бутылка водки наночь натощак.
Попробуй не запросом, а Table.
как вариант - можно попробовать данные выводить в TStrinGdrid. И в нем уже редактировать и записывать обратно.
Компонент Query с запросом Select
формирует таблицу только для чтения. Это можно исправить, если установить в компоненте Query свойство RequestLive в true. Это позволяет возвращать как результат запроса изменяемый, живой набор данных, вместо таблицы только для чтения. Точнее, установка RequestLive в true делает попытку вернуть живой набор данных. Успешной эта попытка будет только при соблюдении ряда условий, в частности:
• набор данных формируется обращением только к одной таблице
• набор данных не упорядочен (в запросе не используется ORDER BY)
• в наборе данных не используются совокупные характеристики типа Sum, Count
и др.
• набор данных не кэшируется (свойство Cashed Updates рввно false).
Из книги А.Я. Архангельский «Программирование в Delphi 7»
Ответ находится в исходнике поставляемом с делфи в демках.
У кого установлен делфи7, исходник лежит тут.
C:\Program Files\Borland\Delphi7\Demos\Db\IBX\CachedUp\
Там просто надо было использовать дополнительные компоненты UPDate
Исходник мне дал больше чем я ожидал получить.
ВСЕМ ГУРУ СПАСИБО!!!