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

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Мишель
Сообщения: 18
Зарегистрирован: 13 июл 2005, 14:28

Опять 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 , но перепробовал уже и все другие - не идет хоть тресни!
Понимаю ,что возможно ,песня старая но помогите все ж :(

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 12 янв 2006, 14:58

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

Мишель
Сообщения: 18
Зарегистрирован: 13 июл 2005, 14:28

Сообщение Мишель » 12 янв 2006, 15:25

Да вроде все правильно сделал,соседние 3 формы также
работают .... :?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 12 янв 2006, 15:39

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

Мишель
Сообщения: 18
Зарегистрирован: 13 июл 2005, 14:28

Сообщение Мишель » 12 янв 2006, 15:51

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 12 янв 2006, 16:07

в тексте на форму посмотри. подключи IBSQLMonitor, глянь что там.

Мишель
Сообщения: 18
Зарегистрирован: 13 июл 2005, 14:28

Сообщение Мишель » 13 янв 2006, 14:09

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 13 янв 2006, 14:51

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

Ответить