Страница 1 из 1

Опять IBX и тразакции

Добавлено: 12 янв 2006, 14:11
Мишель
Не могу понять что происходит .В приложении на новой
форме лежат две связанные таблицы.В Detail таблице пытаюсь
редактировать данные в DBgride,данные редактируются ,но транзакция не проходит после нажатия кнопки с командами :
IBTransaction2.Commit;
IBTransaction2.Active;
IBTransaction2.StartTransaction;
IBDataset1.Prepare;
IBDataset1.Open;
Данные возвращаются старые.В соседних формах этого же
приложения все работало и работает нормально.
На форме лежит :IbDatabase, 2 dataSource,2 Ibdataset,пробовал
и одну и две транзакции подключать на каждый Dataset.
В нужном Datasete все scriptы прописаны-select,modify и delete.
В транзакции Param :
read_committed
rec_version
nowait , но перепробовал уже и все другие - не идет хоть тресни!
Понимаю ,что возможно ,песня старая но помогите все ж :(

Добавлено: 12 янв 2006, 14:58
kdv
Во-первых, держать транзакцию открытой, и перед каким-то действием делать ей commit - плохо.
Во-вторых, IBTransaction.Active:=True и IBTransaction.StartTransaction - это одно и то же.
И в третьих, скорее всего или транзакция не подключена к IBDatabase, или к нужному IBDataSet, в общем, где-то что то не так подключено.

Добавлено: 12 янв 2006, 15:25
Мишель
Да вроде все правильно сделал,соседние 3 формы также
работают .... :?

Добавлено: 12 янв 2006, 15:39
kdv
Данные возвращаются старые
"все правильно сделал", и т.п. - это твои предположения. А ситуация говорит о том, что у тебя в программе НЕ так, как ты предполагаешь.
Если видны "старые данные", то значит или параметры транзакции таки не заданы, или датасет работает В ДРУГОЙ (возможно неявной) транзакции, у которой как раз параметров нет и это по умолчанию snapshot.

Добавлено: 12 янв 2006, 15:51
Мишель
Ну конечно,раз не работает, то что-то не так,прежде чем
задавать вопрос я уже часов 5-6 разбираюсь сам,все перепроверил
раз 300, ступор какой-то.Уже и таблицу эту в одиночку пробовал
изменять-вывел из подчиненности- ни фига не работает.Буду еще
пробовать ,возможно лучше совсем форму убить и заново сделать ...

Добавлено: 12 янв 2006, 16:07
kdv
в тексте на форму посмотри. подключи IBSQLMonitor, глянь что там.

Добавлено: 13 янв 2006, 14:09
Мишель
kdv писал(а):Во-первых, держать транзакцию открытой, и перед каким-то действием делать ей commit - плохо.
.
Все заработало,была дилетантская ошибка...
А можно попросить ответить на простой (для Вас) вопрос ?
Я редактирую данные в DBGRIDE . Хочу чтобы прошла транзакция
после которой я сиог бы в соседних формах уже поиметь
эти измененные записи.Банальное нажатие на "птичку" в навигаторе
при DBGRIDE этого эффекта не дает,надо commitить транзакцию.
Как я понял,я это делаю неправильно(хотя вроде и работает),а как правильно ?

Добавлено: 13 янв 2006, 14:51
kdv
все правильно, изменения принимаются по commit. Ты
www.ibase.ru/devinfo/ibx.htm читал? См. IBUpdateSQLW.