Гость
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert) / 10 сообщений из 10, страница 1 из 1
25.11.2009, 23:53
    #36332332
Striderr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert)
Всем доброго времени суток.
Ситуация следующая.

Реализую удаление данных из таблицы БД.
Связка IBDataBase+IBTransaction+IBDataSet+DataSource+DBGrid.

В IBTransaction установлено Read-Committed

В "Edit SQL" датасета - простое select * from TOVAR

Свойство DeleteSQL содержит строки:

delete from TOVAR
where
ID_TOV = :ID_TOV

В обработчике события нажатия кнопки "Удалить":

IBDataSet1->Delete();

Запускаю программу, выбираю запись, жму "Удалить". Запись исчезает. Однако если перезапустить программу, запись появится снова. Естественно в самой БД тоже никаких изменений.
Пробовал Refresh(); - не помогает. Закрывать-открывать датасет - тоже нет.

Что я упустил или сделал неправильно?
Заранее спасибо.
...
Рейтинг: 0 / 0
26.11.2009, 01:29
    #36332414
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert)
StriderrЧто я упустил или сделал неправильно?

Транзакцию коммитить Пушкин будет?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
26.11.2009, 08:03
    #36332560
Striderr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert)
IBDataSet1->Delete();
IBTransaction1->Commit();
IBDataSet1->Open();
?
Если так, то запись также остается.
...
Рейтинг: 0 / 0
26.11.2009, 08:12
    #36332573
Микросекунда
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert)
"Провались" отладчиком в метод Delete и посмотри, какой запрос выполняется, что в параметрах. А вобще вопрос по дельфи (один хрен в данном случае), однозначно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
26.11.2009, 08:36
    #36332597
Striderr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert)
Микросекунда,

Сильно не бейте, но - как это сделать?)
...
Рейтинг: 0 / 0
26.11.2009, 08:41
    #36332603
Микросекунда
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert)
Striderr пишет:

S> Сильно не бейте, но - как это сделать?)

Ставишь точку останова на строчке с вызовом Delete (ctrl+F8), когда остановится - жмешь F7 и смотришь
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
26.11.2009, 09:30
    #36332662
TPAKTOPA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert)
Вопрос для форума Дельфи, так как ето проблем с пользванием VCL.

Два варианта такого поведения:
1. Запись реально не стерт. Когда делаеш DataSet->Delete() нормально что он изчезает даже если SQL не трет. DataSet то думает что он стерт.
2. Транзакция не Commit-натая. У тебя один компонент Transaction ? Все связи - ок ?
...
Рейтинг: 0 / 0
26.11.2009, 09:32
    #36332666
TPAKTOPA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert)
3. CachedUpdates активно, никото не делает DataSet->ApplyUpdates(); перед Commit-ом
...
Рейтинг: 0 / 0
26.11.2009, 20:40
    #36334509
Striderr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert)
Всем большое спасибо за помощь.
Причина была в свойстве CashUpdates, установленном в True.
...
Рейтинг: 0 / 0
26.11.2009, 20:44
    #36334518
Striderr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert)
Причем стало хватать и одной строчки IBDataSet1->Delete();
Все корректно отображается и из базы записи удаляются. Еще раз спасибо.
...
Рейтинг: 0 / 0
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Удаление записей с помощью IBDataSet. (C++ Builder, FireBird, IBExpert) / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]