![]() |
Модераторы: Akella |
![]() ![]() ![]() |
|
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
У меня в приложении таблица открывается в DBGrid через pFIBDatabase, pFIBDataSet, DataSource. Сделано так, что записи можно добавлять прямо в таблице.
Но почему-то, после того, как добавлю несколько записей (или одну), их нельзя ни удалить, ни отредактировать. Точнее в гриде это всё можно делать, но реально, в базе, они не изменяются. А вот после того, как переоткрою набор данных, все нормально - можно и удалить, и изменить. Где я что недописал? Всё выглядит так, как будто все изменения подтверждаются только по закрытию датасета. Хотя в свойствах AutoCommit = true -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
Esperito |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 2.9.2007 Репутация: нет Всего: 3 |
Желательно подключить pFIBTransaction к pFIBDataSet. И вместо AutoCommit делать при окончании работы pFIBTransaction.Commit (или, по условию, pFIBTransaction.Rollback).
|
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Не, ну pFIBTransaction-то конечно есть (даже два). Без него бы вообще не работало. Попробую без AutoCommit
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
TObject |
|
||||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 13.3.2008 Репутация: нет Всего: 1 |
Не очень хороший подход. Никогда так не делал. Обычно добавление и редактирование делаю в отдельной форме, где по кнопке (Ок, Сохранить, Записать) происходит чтото типа такого:
заодно всякие проверки можно проводить еще на клиенте. |
||||
|
|||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Это не очень хороший подход со стороны программиста, а вот со стороны пользователя, которому эти таблицы редактировать, как раз самый замечательный подход. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
TObject |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 13.3.2008 Репутация: нет Всего: 1 |
Ну как говорится на вкус и цвет, денег нет. ![]() На этот счет можно долго спорить. Но скажи в чем удобство прямого добавления если например в добавляемую запись нужно вставить несколько данных из справочников, опять же нужно раскошелится на дополнительный код, лепить кпопочки в гриде по определенным столбцам и т.д. |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Никаких кнопочек лепить не надо. Если настроены lookup-поля, выпадающие списки сами, где надо, появляются.
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
||||
|
||||
ksili |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
У pFIBDatabase и pFIBDataSet есть свойства DefaultTransaction и DefaultUpdateTransaction. Все DefaultTransaction у меня установлены в Transaction1 (один компонент), все DefaultUpdateTransaction установлены в Transaction2 (тоже один компонент). У DefaultTransaction все свойства по-умолчанию. У DefaultUpdateTransaction оказывется тоже! а я думал, чо выставлял отдельные параметры
По-умолчанию это:
Это сообщение отредактировал(а) ksili - 3.4.2008, 13:40 -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
||||
|
|||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
У читающей должно быть:
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
||||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Попробую. Но вот сейчас я заметил, что параметры добавленные в дизайнере в TRParams (оно типа TStrings), не сохраняются! Закрыл проект - открыл проект ---> TRParams = NULL. Их нужно только в run-time добавлять? Кто-нибудь сталкивался с таким?
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
Deniz |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Akella, для пишущей короткой лучше:
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Разобрался почему не сохранялись настройки в TRParams. Теперь сохраняются, но все равно не работает как надо:
У меня стоят настройки, чтобы автоматически обновлялись все SQL. Так вот перехватывал события обновляющей транзакции BeforeEnd и AfterEnd. В обоих содержимое UpdateSQL датасета равно NULL! Хотя содержимое таблицы действительно обновляется (правда криво, как описано выше) -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
ksili |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
С этим разобрался - в том конкретном случае надо было смотреть InsertSQL, а не UpdateSQL. Запросы вроде генерируются правильно, но смущает один момент. В документации FIBPlus (Developers Guide) указаны примерно такие запросы
У меня генерируются такие:
Хотя в настройках датасета я указал
Непонятка с именами параметров: в документации оно такое же как поле, но с двоеточием, в реальности приписывается ?NEW_ или ?OLD_, хотя в настройках указаны совершенно конкретные имена -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Interbase" | |
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |