Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Инфа не удаляется в таблицах InterBase, что делаю неправильно? [D5, D6, IB5.x, IB6.x, ]


Страницы:   1 2

Radix ©   (2002-01-09 10:34:00) 

Хелп, мастера! Изучаю Interbase (толком ничего не знаю, больно не бейте:). Создаю Database и таблицу в ней, полей этак с двадцать, где половина integer, а другая varchar win1251, есть индекс, но нет праймари ки. Пишу прогу с IBQuery, IBDatabase, IBTransaction и TIBUpdateSQL, плюс DBEdit(по количеству полей) и навигатор (пока, чтоб не рисовать кнопки). Так вот, в таблицу инфу записать можно, но удалить никак - говорит Updates failed. Установка CashedUpdates=true ничем не помогает - инфа не удаляется :(. Пытался в 5 и 6-ом Дельфях и IB, но всё одно. При спользовании IBTable результат нормальный. Что же лучше использовать - IBQuery, просто Query или ещё что ? Что делаю неправильно ? Думаю сделать двузвенку, если сумею :). Кстати говоря, где что можно почитать про IB, в книжках по Делфям всё как-то мимоходом ? Заранее благодарю.


evgeg   (2002-01-09 12:27:00) [21]

Скорее всего, изключение возникает из-за отсутсвия primary key.


wipr   (2002-01-09 12:03:00) [22]

Из книг советую найти "Delphi 3 и создание приложений баз данных" под редакцией Шумакова П.В. Для начинающих то что надо. Видел для Delphi 4 и 5, но мне больше нравивится для Delphi 3, хотя пишу в Delphi 6.
Что касается главного вопроса. Если ты используешь IBQuery или Query, то ты обязан использовать IBUpdateSQL или UpdateSQL, в которых прописал соответственно Insert, Update, Delete (SQL команды), далее необходимо использовать примерно следующий код, например при кнопки удалить (сохранить добавление или изменение):
try
Database1.StartTransaction;
Query1.ApplyUpdates;
Database1.Commit;
Query1.CommitUpdates;
except
Database1.Rollback;
Query1.CancelUpdates;
ShowMessage("Не могу удалить ...");
end;
И все должно получиться, если нет праймари ки на удаляемое поле в других таблицах, или не писал в триггере востановление удаленной записи.


Fareader   (2002-01-09 11:37:00) [23]

А ты изменить данные можешь IBQuery или тоже Updates failed ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо