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

Ответ Создать новую тему
 
Ayyf
Новичок
0 / 0 / 0
Регистрация: 26.04.2009
Сообщений: 37
02.08.2011, 14:22     DBGrid и обновление.
  #1
Здравствуйте, у меня есть БД 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 и нажав "обновить", выскакивает ошибка: Невозможно найти строку для обновления, данные были изменены ранее.
Не мого понять, что ему не нравится.... Подскажите, пожалуйста, замучала эта ошибка уже))
AdAgent
Объявления
02.08.2011, 14:22
alexan0308
Форумчанин
42 / 42 / 2
Регистрация: 07.06.2011
Сообщений: 229
Записей в блоге: 2
03.08.2011, 10:26
  #2
Цитата Сообщение от Ayyf Посмотреть сообщение
На форме1 у меня происходит добавление данных в БД через кнопку "обновить", на ней же можно и отредактировать эти данные.
И эти же данные появляются в DBgrid, где заполняюся данные по этим записям, только другие поля.
выскакивает ошибка: Невозможно найти строку для обновления, данные были изменены ранее.
Привет! Одной дорогой идем товарищи! )) Я в итоге запретил редактирование в dbgrid , все поля присутствуют в форме. Если таблица большая, то целиком в дбгриде, а формы нет.
MsGuns
Форумчанин
519 / 519 / 3
Регистрация: 04.04.2011
Сообщений: 1,900
03.08.2011, 11:12
  #3
Ни в коем случае нельзя "пускать на самотек" фиксацию изменений в БД, да еще безо всяких проверок ! (в сабже это делается по уходу фокуса из сетки). Это во-первых.
Во-вторых, работать в эксельной манере с TDBGrid можно (иногда даже нужно), но чтобы эта работа была корректная, надо обрабатывать некоторые события и грида и датасета (OnExit, OnColExit, BeforePost/Insert/Delete, AfterScroll и т.д.), кроме 100% гарантию дает только TIBTable, сам по себе чрезвычайно вредный и нехороший.
Есть еще и в-третьих, и в-четвертых...

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

И последнее. Если найдутся овощи, которые будут Вас лечить в плане того, что через "правильные" компоненты (например FIBPlus) грамотное редактирование любой таблицы сделать легко и быстро - сразу плюйте им в глаз !!!
SAMZ
Форумчанин
1244 / 687 / 9
Регистрация: 21.12.2009
Сообщений: 2,195
03.08.2011, 11:38
  #4
Цитата Сообщение от MsGuns Посмотреть сообщение
Если найдутся овощи, которые будут Вас лечить в плане того, что через "правильные" компоненты (например FIBPlus) грамотное редактирование любой таблицы сделать легко и быстро - сразу плюйте им в глаз !!!
Под овощем не меня имели ввиду?
Я в проектах действительно предпочитаю FB в связке с линейкой FIBPlus, но не вижу связи с поставленным в топике вопросом. Где редактировать в гридах, модальных формах, использовать компоненты редактирования с прямым доступом к БД или нет - это совсем другой вопрос!
MsGuns
Форумчанин
519 / 519 / 3
Регистрация: 04.04.2011
Сообщений: 1,900
03.08.2011, 14:09
  #5
Код Delphi
1
Под овощем не меня имели ввиду?
Нет, конечно. Удивлен, как Вы могли такое подумать ?

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

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

Похожие темы
Тема Раздел Автор Дата
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
Как обновить данные в дбгриде после добавления? вот код добавления Form1.ADOQuery1.Close(); Form1.ADOQuery1.SQL.Clear(); Form1.ADOQuery1.SQL.Add('UPDATE ó÷àùèåñÿ SET...
Delphi и базы данных lewkaneprowaet 02.12.2013 17:02
Delphi Обновление данных в DBGrid
В общем результаты теста добавляются в бд Access. В саму базу данных добавляются как надо, а вот в программе DBGrid показывает их только после перезапуска программы. Использую...
Delphi для начинающих RibSlicer 19.05.2013 09:26
Delphi БД обновление DBGrid
Всем доброго вечера. Возник вопрос. Есть 1 DBGrid и 2 DataSource. Как сделать как чтобы сразу грид выводил значения одного сорса, а при нажатии на кнопку другого?
Delphi и базы данных ani-ni4ka 07.01.2013 00:15
Delphi БД Обновление 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;...
Delphi filsh 02.08.2010 15:31
Delphi БД DBGrid и его обновление
доброе время суток! возникла проблема. плагином из стороннего приложения выбираю необходимые данные, которые помещаются в таблицу на SQL-сервере. после чего запускается программа, которая уже в...
Delphi и базы данных Вишнёвая Amoure 23.07.2010 09:42
Опции темы

Текущее время: 20:36. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.