Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > Форум Форум программистов > Форум Delphi > Форум Delphi и базы данных
Восстановить пароль Регистрация

Ответ Создать новую тему
 
02.08.2011, 14:22   #1
Ayyf
Новичок
Регистрация: 26.04.2009
Сообщений: 37
Репутация: 0 (0)
DBGrid и обновление. / Delphi и базы данных

Здравствуйте, у меня есть БД Access, подключено все через ADOTAble.
На форме1 у меня происходит добавление данных в БД через кнопку "обновить", на ней же можно и отредактировать эти данные.
И эти же данные появляются в DBgrid, где заполняюся данные по этим записям, только другие поля.
Запись через DBgride у меня стоит такая:
Код Delphi
1
2
3
4
5
6
7
8
9
procedure TForm4.DBGrid2Exit(Sender: TObject);    
begin
     if DBGrid2.EditorMode or DBGrid2.DataSource.DataSet.Modified then
     begin
       DBGrid2.DataSource.DataSet.Post;
       Form1.ADOTable13.Close;
       Form1.ADOTable13.Open;        
     end;
end;
Все работает и "Обновить" и процедура DBgride. Но проблема в том, что, если данные сначала отредактировать в DBgride, а потом, например, изменив что-то через форму1 и нажав "обновить", выскакивает ошибка: Невозможно найти строку для обновления, данные были изменены ранее.
Не мого понять, что ему не нравится.... Подскажите, пожалуйста, замучала эта ошибка уже))
02.08.2011, 14:22
AdAgent
Объявления
03.08.2011, 10:26   #2
alexan0308
Форумчанин
Регистрация: 07.06.2011
Сообщений: 228
Репутация: 42 (42)
Записей в блоге: 2
Лучшие ответы: 2
DBGrid и обновление.

Цитата Сообщение от Ayyf Посмотреть сообщение
На форме1 у меня происходит добавление данных в БД через кнопку "обновить", на ней же можно и отредактировать эти данные.
И эти же данные появляются в DBgrid, где заполняюся данные по этим записям, только другие поля.
выскакивает ошибка: Невозможно найти строку для обновления, данные были изменены ранее.
Привет! Одной дорогой идем товарищи! )) Я в итоге запретил редактирование в dbgrid , все поля присутствуют в форме. Если таблица большая, то целиком в дбгриде, а формы нет.
Другие темы раздела
Delphi БД Ошибка приложения
Здраствуйте, при запуске программы на другом компьютере выдает ошибку. Помогите пожалуйста разобраться....
Delphi БД Нужна помощь по ячейкам в Excel
есть таблица в excel 31 на 32 и пользователь закрашивает по своему выбору определённые ячейки,так вот,как сделать чтобы delphi определил какие закрашенные,а какие нет??? Добавлено через 41 секунду просто цветом ячеки
03.08.2011, 11:12   #3
MsGuns
Форумчанин
Регистрация: 04.04.2011
Сообщений: 1,900
Репутация: 519 (519)
Лучшие ответы: 3
DBGrid и обновление.

Ни в коем случае нельзя "пускать на самотек" фиксацию изменений в БД, да еще безо всяких проверок ! (в сабже это делается по уходу фокуса из сетки). Это во-первых.
Во-вторых, работать в эксельной манере с TDBGrid можно (иногда даже нужно), но чтобы эта работа была корректная, надо обрабатывать некоторые события и грида и датасета (OnExit, OnColExit, BeforePost/Insert/Delete, AfterScroll и т.д.), кроме 100% гарантию дает только TIBTable, сам по себе чрезвычайно вредный и нехороший.
Есть еще и в-третьих, и в-четвертых...

Короче, Вам как новичку лучше всего корректировку данных в IB делать через модальные формы, как советует alexan0308

И последнее. Если найдутся овощи, которые будут Вас лечить в плане того, что через "правильные" компоненты (например FIBPlus) грамотное редактирование любой таблицы сделать легко и быстро - сразу плюйте им в глаз !!!
03.08.2011, 11:38   #4
SAMZ
Форумчанин
Регистрация: 21.12.2009
Сообщений: 2,190
Репутация: 1239 (682)
Лучшие ответы: 8
DBGrid и обновление.

Цитата Сообщение от MsGuns Посмотреть сообщение
Если найдутся овощи, которые будут Вас лечить в плане того, что через "правильные" компоненты (например FIBPlus) грамотное редактирование любой таблицы сделать легко и быстро - сразу плюйте им в глаз !!!
Под овощем не меня имели ввиду?
Я в проектах действительно предпочитаю FB в связке с линейкой FIBPlus, но не вижу связи с поставленным в топике вопросом. Где редактировать в гридах, модальных формах, использовать компоненты редактирования с прямым доступом к БД или нет - это совсем другой вопрос!
03.08.2011, 11:38
AdAgent
Объявления
03.08.2011, 14:09   #5
MsGuns
Форумчанин
Регистрация: 04.04.2011
Сообщений: 1,900
Репутация: 519 (519)
Лучшие ответы: 3
DBGrid и обновление.

Код Delphi
1
Под овощем не меня имели ввиду?
Нет, конечно. Удивлен, как Вы могли такое подумать ?

"Овощами" я назвал баклажанов, перцев, огурцов и т.д., научившихся простым бросанием компонент а-ля Фаронов-Архангельский "программировать" базовые программы (и даже сдавшие пару курсачей "преподам") и считающих себя крутыми до такой степени, что могут учить других.

Признаюсь, когда-то тоже думал примерно так, но на первом же "живом" проекте поломал себе ноги-руки, глазы-зубы, борясь с непонятными "чудесами", с завидным постоянством случающимся с базами (неполностью заполненные поля и записи, пропажа целых кусков документов (накладных) и наоборот появление "левых" и т.д.). Долго мучился с обработкой многочисленных событий, пока не плюнул и не сделал ввод и корректировку накладных "модалками".
Конечно, по желанию заказчика неоднократно делал "гридное" редактирование, но мороки с ним всегда было достаточно (имеются в виду базы несколько посложнее телефонного справочника)
03.08.2011, 15:03  [ТС]   #6
Ayyf
Новичок
Регистрация: 26.04.2009
Сообщений: 37
Репутация: 0 (0)
DBGrid и обновление. / Delphi и базы данных

Спасибо, буду пробовать)
03.08.2011, 15:03
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Delphi БД Dbgrid обновление
ВОт есть код unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls; type
Delphi и базы данных Андрей 94 06.05.2014 16:06
Delphi БД обновление DBGrid
Всем доброго вечера. Возник вопрос. Есть 1 DBGrid и 2 DataSource. Как сделать как чтобы сразу грид выводил значения одного сорса, а при нажатии на кнопку другого?
Delphi и базы данных ani-ni4ka 07.01.2013 00:15
Delphi БД Обновление DBGrid
Ребят, проблема такая: есть форма с DBGrid куда выводится база, есть вторая форма на которой реализовано добавление записи в базу! Запись добавляется по кнопке! НО есть одно НО! Новая запись не отражается в DBGrid, только лишь после перезапуска программы. Вопрос: как обновить DBGrid или другие...
Delphi и базы данных Electroflower 25.05.2012 09:32
Delphi Обновление DBGrid 'а
Подскажите пожалуйста как мне сделать обновление DBGrid 'а ? Чтобы при новой записи он автоматически обновился ?
Delphi для начинающих K.A.V. 05.02.2012 21:40
Delphi Обновление содержимого DBGrid
Подскажите, как обновить содержание DBGrid если значение таблицы изменялось в это время другим DBGrid, использую базу данных Access. На данный момент делаю так tabl.Active:=false; tabl.Active:=true; То есть закрываю и заново открываю таблицу, способ очень медленный, если другой?
Delphi filsh 02.08.2010 15:31
Опции темы


Текущее время: 17:30. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.