Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с FIB, редактирование данных в гриде [D6, Firebird 1.5]


Olivka ©   (2004-03-19 15:40:00) 

На форме грид, и компоненты FIBplus. Все настроено - грид редактируется, новый ID генерится, все как по книжке. Новые записи вставляются, удаляются, редактируются. Одно не редактируется - только что вставленные записи.
Я понимаю что не сделала какую-то мелочь - но что?


Olivka   (2004-03-19 17:03:00) [1]

Я нашла ошибку, всем спасибо!


Olivka   (2004-03-19 16:45:00) [2]

В свойствах датасета transaction и UpdateTransaction стоит одно и то же. Autocommit стоит в true, соответственно в логах:
(я всего лишь обновляю одни номера - вначале вставляю 5, а затем меняю его на 55. В логе - insert, commit, refresh, update)

[19.03.2004 16:39:52]
;Application: platIB.exe
FIBDS_blanks: [Execute] INSERT INTO T_BLANKS(
   ID_TYPEBLANK,DATE_,NBLANK,FL_BAD
)
VALUES(
   ?ID_TYPEBLANK,?DATE_,?NBLANK,?FL_BAD
)

 ID_TYPEBLANK = 3
 DATE_ = 13.02.2004
 NBLANK = '5'
 FL_BAD = 1
Rows Affected:  1
Execute tick count 0

[19.03.2004 16:39:52]
;Application: platIB.exe
FIBT_new: [Commit retaining (Soft commit)](5812)

[19.03.2004 16:39:52]
;Application: platIB.exe
FIBDS_blanks: [Execute] SELECT T_BLANKS.ID_,
 T_BLANKS.ID_TYPEBLANK,
 T_BLANKS.DATE_,
 T_BLANKS.NBLANK,
 T_BLANKS.FL_BAD,
 S_TYPEBLANK.SHORTNAME
FROM T_BLANKS
  LEFT OUTER JOIN S_TYPEBLANK ON
  (T_BLANKS.ID_TYPEBLANK = S_TYPEBLANK.ID_)
where(  T_BLANKS.date_=:date_ and T_BLANKS.fl_bad=1
@@wh%and 1=1@ )
   and (     T_BLANKS.ID_ = ?OLD_ID_
    )    

 DATE_ = 13.02.2004
 WH = ' and T_BLANKS.ID_typeBlank=3'
 OLD_ID_ = 177
Execute tick count 0

[19.03.2004 16:39:59]
;Application: platIB.exe
FIBDS_blanks: [Execute] UPDATE T_BLANKS
SET
   NBLANK = ?NBLANK
WHERE
   ID_ = ?OLD_ID_
   

 NBLANK = '55'
 OLD_ID_ = 177
Rows Affected:  0
Execute tick count 0

[19.03.2004 16:39:59]
;Application: platIB.exe
FIBT_new: [Commit retaining (Soft commit)](5813)

[19.03.2004 16:39:59]
;Application: platIB.exe
FIBDS_blanks: [Execute] SELECT T_BLANKS.ID_,
 T_BLANKS.ID_TYPEBLANK,
 T_BLANKS.DATE_,
 T_BLANKS.NBLANK,
 T_BLANKS.FL_BAD,
 S_TYPEBLANK.SHORTNAME
FROM T_BLANKS
  LEFT OUTER JOIN S_TYPEBLANK ON
  (T_BLANKS.ID_TYPEBLANK = S_TYPEBLANK.ID_)
where(  T_BLANKS.date_=:date_ and T_BLANKS.fl_bad=1
@@wh%and 1=1@ )
   and (     T_BLANKS.ID_ = ?OLD_ID_
    )
   

 DATE_ = 13.02.2004
 WH = ' and T_BLANKS.ID_typeBlank=3'
 OLD_ID_ = 177
Execute tick count 0


Johnmen   (2004-03-19 16:36:00) [3]

Дело в том, что видимо у тебя есть пишущая и читающая тр-ии. После изменений в рамках пишущей надо её подтверждать.


Olivka   (2004-03-19 16:33:00) [4]

autocommit =true (это в свойствах датасета). CashedUpdates=false
Монитор показывает, что запросы идут к бд исправно, такие, как я хочу.


Olivka   (2004-03-19 16:30:00) [5]

write
nowait
rec_version
read_committed

Все стоит как было по-умолчанию вообще.
В том-то и дело, что эта транзакция не видит свои же изменения. ДАже если и посылает update ... where id= <некий новый только что полученный ид>
Но изменения в таблице нету - update records 0
Я в транз. плохо разбираюсь, какие параметры тут нужно ставить.


Соловьев   (2004-03-19 16:21:00) [6]

А транзакция какая? уровни изоляции?


Наверх

Титульная страница Поиск, карта сайта Написать письмо