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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2007, 22:07   #1
chingiz
Пользователь Подтвердите свой е-майл
 
Аватар для chingiz
 
Регистрация: 21.05.2007
Сообщений: 88
По умолчанию Потеря данных в Grid

Неожиданно возникла такая проблема. Приложение работает с базой через IBTable, данные отображаются в DBGrid. Так вот - добавляю строку, вношу данные в Gridе например в поле Field_1, добавляю еще строку вношу данные снова в поле Field_1 и т.д. Затем возвращаюсь на первую строку, добавляю данные в поле Field_2, перехожу на следующую
строку, и добавляю данные в поле Field_2 и т.д. Вроде бы все нормально, в Gride видно все что я внес, но после повторного открытия приложения данные остаются только в поле Field_1. Не пойму в чем тут проблема. Заранее благодарен за помощь.
Уже Чему-то научился Но этого мало
chingiz вне форума Ответить с цитированием
Старый 26.07.2007, 22:19   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Грид тут вообще ни при чём. Данные либо добавляются в таблицу, либо нет. А Грид лишь ее отображение. Вообще то, добавлять данные через Грид -последнее дело. И ДБНавигатор - это фигня.
Пишем
Table1.Insert;
Table1.FieldByName('Field_2').AsStr ing:='Привет';
Table1.Post;
... и уж после Post-а данные точно не убегут...
_SERGEYX_ вне форума Ответить с цитированием
Старый 26.07.2007, 22:40   #3
chingiz
Пользователь Подтвердите свой е-майл
 
Аватар для chingiz
 
Регистрация: 21.05.2007
Сообщений: 88
По умолчанию

Дело в том что данное приложение уже в эксплуатации около года а эта бяка вылезла только сейчас, поэтому кординально менять логику программы не хотелось бы. Насчет того что после поста данные не пропадут - согласен, но дело в том что если после этого поста добавить
данные в эту же строку то они волшебным образом кудато улетучиваются. Наверное дело в транзакциях, пробовал commit, все равно такая же ерунда. Если строку запостить, открыть приложение заново, то добавляй в строку все что угодно, любым способом, никуда ничего не денется. А вот если строку запостить и тутже добавить в нее данные то после нового открытия приложения данных то нет - Че за фокусы?
Уже Чему-то научился Но этого мало
chingiz вне форума Ответить с цитированием
Старый 26.07.2007, 22:55   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

А если написать
procedure TForm1.Table1AfterEdit(DataSet: TDataSet);
begin
Table1.Edit;
Table1.Post;
end;
.. то все равно то же самое?
_SERGEYX_ вне форума Ответить с цитированием
Старый 26.07.2007, 23:11   #5
chingiz
Пользователь Подтвердите свой е-майл
 
Аватар для chingiz
 
Регистрация: 21.05.2007
Сообщений: 88
По умолчанию

Не знаю завтра попробую, скажу.
Уже Чему-то научился Но этого мало
chingiz вне форума Ответить с цитированием
Старый 27.07.2007, 18:14   #6
chingiz
Пользователь Подтвердите свой е-майл
 
Аватар для chingiz
 
Регистрация: 21.05.2007
Сообщений: 88
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
А если написать
procedure TForm1.Table1AfterEdit(DataSet: TDataSet);
begin
Table1.Edit;
Table1.Post;
end;
.. то все равно то же самое?
Все еще хуже, данные вообще не вносятся. Кстати пробовал по такому же принципу, как писал раннее, вносить данные программным путем - т.е. сначала добавляю несколько строк в таблицу, а уже затем вношу в эти строки данные, получается та же картина - данные пропадают, причем только из вновь добавленных строк. Но всетаки когда тебе что нибудь советуют, то мозги начинают думать в правильном направлении. Стоило только вчера задать вопрос и сегодня я решил эту проблему, хотя до этого не мог понять, да и сейчас не совсем понимаю почему данные исчезают. Я думаю что здесь присутствует какая-то ошибка дяди Борланда. Решил я это следующим образом:

До открытия таблицы
.......
IBTable.CachedUpdates:=True;
......
Вношу данные в грид, добавляю несколько строк, вношу в них данные...
.......
И при закрытии формы
IBTable.ApplyUpdates;

После повторного открытия приложения все данные на месте. Пока меня это устраивает, что будет дальше посмотрим.
Кстати данные тоже никуда не пропадают, если не кэшировать данные,
а после добавления каждой записи делатьTable.Refresh, после этого можно добавлять данные в эти записи в любое время до закрытия таблицы. Правда Table.Refresh занимает некоторое время да и грид надо перерисовывать.
Уже Чему-то научился Но этого мало
chingiz вне форума Ответить с цитированием
Старый 27.07.2007, 18:18   #7
chingiz
Пользователь Подтвердите свой е-майл
 
Аватар для chingiz
 
Регистрация: 21.05.2007
Сообщений: 88
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
Грид тут вообще ни при чём. Данные либо добавляются в таблицу, либо нет. А Грид лишь ее отображение. Вообще то, добавлять данные через Грид -последнее дело. И ДБНавигатор - это фигня.
А чем Грид не нравится, помоему очень удобно и наглядно.
Насчет ДБнавигатора на самом деле - фигня.
Уже Чему-то научился Но этого мало
chingiz вне форума Ответить с цитированием
Старый 27.07.2007, 18:34   #8
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от chingiz Посмотреть сообщение
А чем Грид не нравится, помоему очень удобно и наглядно.
IBTable - представляет данные из таблицы БД.
DBGrid - отображает данные из полей БД в табличной форме.
Т.е. результат (таблицу) Вы видите в Gridе, а работаете непосредственно с Table.
Alex21 вне форума Ответить с цитированием
Старый 29.07.2007, 00:17   #9
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Если есть возможность, сооруди SQL монитор. Проблема похоже в том, что у тебя не подтверждается транзакция. После выполнения запроса в листинге SQL монитора, дожен идти Commit. Если транзакция не подтвержлена, она откатывается.
Rik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
потеря параметров при вызове формы из dll... Roof Общие вопросы Delphi 4 22.08.2008 22:08
Потеря данных при изменении рамера раздела Drandulet Софт 5 06.07.2008 07:52
Grid nimf Общие вопросы Delphi 2 22.04.2008 13:16
Потеря переменной при выходи из процедуры Kaz Помощь студентам 3 07.06.2007 03:24
Help!Grid и Edit Дамир БД в Delphi 1 16.02.2007 02:05