![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IBX и DeleteSQL() [D7, FireBird]
londinium © (2006-07-23 15:17:00)День добрый,Господа!
Работаю с БД FireBird 1.5 SS c помощью IBX(C++Builder 6.0 SP4).Пишу код на удаление записи из таблицы так:
IBDataSet1->Close();
IBDataSet1->DeleteSQL->Clear();
IBDataSet1->DeleteSQL->Add("delete from refworkers where ID=:ID");
IBDataSet1->Open();
IBDataSet1->Delete();
IBDataSet1->FieldByName("ID")->AsInteger=5;
try
{
IBDataSet1->Post();
IBTransaction1->Commit();
IBDataSet1->Close();
MessageBox(0,"Запись удалена","ИНФОРМАЦИЯ",MB_ICONINFORMATION);
}
catch(...)
{
MessageBox(0,"Ошибка удаления записи", "ОШИБКА",MB_ICONSTOP);
IBTransaction1->Rollback();
IBDataSet1->Close();
}
Получаю по морде исключением "Not in edit mode". Вопрос: как встать в edit mode и удалить эту запись
londinium (2006-07-23 22:07:00) [1]Здравствуйте!
Всем спасибо за ответы.Сейчас попробую.
jack128 (2006-07-23 19:03:00) [2]londinium (23.07.06 15:17)
Пишу код на удаление записи из таблицы так:
видимо ты не совсем представляешь, что такое TIBDataset. Точнее СОВСЕМ не представляешь.
метод IBDataSet1->Delete(); удаляет ТЕКУЩУЮ запись. Вот это IBDataSet1->FieldByName("ID")->AsInteger=5; - не на что не влияет.
Твой код нужно переделать примерно так
procedure DeleteRefWorker(AID: Integer);
var
SQL: TIBSQL;
InTransaction: boolean;
begin
SQL := TIBSQL.Create(nil);
try
SQL.Database := MainDataModule.db;
SQL.Transaction := MainDataModule.RWTransaction;
SQL.SQL.Text := 'delete from refworkers where ID=' + IntToStr(AID);
InTransaction := SQL.Transaction.InTransaction;
if not InTransaction then
SQL.Transaction.StartTransaction;
try
SQL.ExecQuery;
finally
if not InTransaction then
SQL.Transaction.Commit;
end;
finally
SQL.Free;
end;
end;
Johnmen (2006-07-23 16:06:00) [3]
> londinium (23.07.06 15:17)
Т.е. вот так вот берём и удаляем непонятно какую запись, не обращая внимания, что и её может не быть????????????????
Desdechado (2006-07-23 15:21:00) [4]Post нужен только после Edit или Insert или Append
У тебя этого ничего нет, на кой Post?
А что за присваивание пятерки после удаления строки?