![]() |
Модераторы: Akella |
![]() ![]() ![]() |
|
rOOxus |
|
|||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 95 Регистрация: 28.8.2006 Репутация: нет Всего: нет |
На форме клиентского приложения имеються компоненты IBDatabase IBTransaction IBTable DataSource DBGrid.
Для записи изменений в таблицу БД использую метод IBTransaction->Commit() но не все изменения попадают в таблицу! Если например я добавил несколько записей через IBTable->Insert(), потом несколько из этих же записей удалил IBTable->Delete(), а потом выполнил IBTransaction->Commit(), то удаление не выполняеться так как будто я и не выполнял IBTable->Delete(), а только IBTable->Insert(). В чем тут может быть дело? ![]() P.S.: Использую свойства всех компонентов по-умолчанию. |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Так он их не удаляет наверно потому что их ещё там нету (вы же их ещё не прокоммитили!)
Попробуйте выполнить всё это в одном скрипте в IBExpert'e, вот увидите, что на эти delet'ы он вернёт ошибку -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
rOOxus |
|
|||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 95 Регистрация: 28.8.2006 Репутация: нет Всего: нет |
Я первым делом попробовал выполнить эти же действия в сетке редактирования данных таблицы IBExpertа: добавил пять записей, потом три удалил и закоммитил... все корректно осталось две, а в моей программе остаються все пять
![]() У меня такое чуство, что я где-то аццки протупил, но где не могу понять... это же должго быть поще пареной репы ![]() Это сообщение отредактировал(а) rOOxus - 11.2.2008, 09:01 |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Ну просто IBExpert несколько умнее, чем кажется. Когда там вручную запись добавляешь, это не выполняется запрос, а просто в гриде добавляется строка. Запрос выполняется только когда нажимаете коммит, он видит две стоки в гриде, вот их и коммитит.
Повторяю: нельзя удалить то, чего ещё нет -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 1 Всего: 20 |
rOOxus, ес-но будет так, все данные будут в буфере базы, а реальные изменения будут после переконекта, если хочешь сразу, делай так:
IBTransaction.StartTransaction; ...... // insert or update IBTransaction.Commit; -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
rOOxus |
|
|||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 95 Регистрация: 28.8.2006 Репутация: нет Всего: нет |
Господа, я прошу прощения, но мне кажеться вы не о том толкуем...
Вчера под впечатлением от таких событий пошел к товарищу и вместе мы произвели такой вот тест:
Результат: На моем Ноуте ID TXT 1 NULL 2 NULL 3 NULL 4 NULL А У ТОВАРИЩА ![]() ID TXT 3 NULL 4 NULL Не поленитесь проделайте это эксперемент у себя. Интересно что получиться? |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
rOOxus, а если сделать такой же тест у тебя? Именно с созданием новой БД и нового клиента?
Еще укажи полные версии Delphi, IBX, FireBird/InterBase. PS: Можешь прилепить сюда свои исходники. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
rOOxus |
|
|||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 95 Регистрация: 28.8.2006 Репутация: нет Всего: нет |
Сервер - FB 1.5.3.4870-0
IDE - C++ Builder 6 IBX - 2007.07.20 Создал новую базу в ней табличку... написал элементарное клиентское приложение... вроде все работает нормально. Добавляю, удаляю, коммичу... все корректно. Короче дело явно в старой БАЗЕ. Что же с ней то не так было? Старую базу рисовал в Дизайнере БД, потом экспортировал в скрипт и запускал его... Может в скрипте что-то не так... (он кстати прилагаеться) Это сообщение отредактировал(а) rOOxus - 13.2.2008, 14:55 Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Ты прикалываешься, там список таблиц кошмарный (слишком много), или у тебя со всеми так?
Проверь права на удаление. Возможно в программе есть события на удаление. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
rOOxus |
|
|||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 95 Регистрация: 28.8.2006 Репутация: нет Всего: нет |
В программе нет никаких событий вообще... Заметил что глюк возникает именно с теми записями, где есть пустные поля
|
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Может в ней был триггер, который при добавлении записи создавал в другой таблице записи, связанные внешним ключом с этими записями. Поэтому их было просто так уже не удалить -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
rOOxus |
|
|||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 95 Регистрация: 28.8.2006 Репутация: нет Всего: нет |
Вот собсно пример того как глючит. Если с помощью DBGrid добавить несколько записей с пустым полем TXT, потом удалить и нажать кнопочку, которая коммитит транзакцию, то удаленные записи не исчезнут.
Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
не открывается твоя база(у меня fb 1.5.3), в какой версии делал?
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
rOOxus |
|
|||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 95 Регистрация: 28.8.2006 Репутация: нет Всего: нет |
Ну и у меня firebird 1.5.3... делел IBExpert'ом 2007.07.20...
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Interbase" | |
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |