Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Вниз

IBX и DeleteSQL()   Найти похожие ветки 

 
londinium   (2006-07-23 15:17) [0]

День добрый,Господа!

Работаю с БД 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 и удалить эту запись


 
Desdechado ©   (2006-07-23 15:21) [1]

Post нужен только после Edit или Insert или Append
У тебя этого ничего нет, на кой Post?
А что за присваивание пятерки после удаления строки?


 
Johnmen ©   (2006-07-23 16:06) [2]


> londinium   (23.07.06 15:17)


Т.е. вот так вот берём и удаляем непонятно какую запись, не обращая внимания, что и её может не быть????????????????


 
jack128 ©   (2006-07-23 19:03) [3]

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;


 
londinium   (2006-07-23 22:07) [4]

Здравствуйте!
Всем спасибо за ответы.Сейчас попробую.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.037 c
15-1157041214
Sam Stone
2006-08-31 20:20
2006.09.24
TNSListner


15-1157204680
PSPF2003
2006-09-02 17:44
2006.09.24
Монитор


3-1153747299
VALUA
2006-07-24 17:21
2006.09.24
DBGRID - как поместить графическое изображение в колонку


4-1148128120
Name
2006-05-20 16:28
2006.09.24
Как поменять ExStyle и Style окна?


1-1155638942
ак
2006-08-15 14:49
2006.09.24
непонятная ошибочка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский