Главная страница
    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.46 MB
Время: 0.044 c
15-1156922134
Змей
2006-08-30 11:15
2006.09.24
литература по апи


15-1157617434
AzovSky
2006-09-07 12:23
2006.09.24
Программа для резервирования исходников и сборки версий


3-1153398683
zorik
2006-07-20 16:31
2006.09.24
Как изменить CHARACTER SET для всей БД?


2-1157551576
nordic3
2006-09-06 18:06
2006.09.24
Запуск проги по сети


4-1148039556
Elen
2006-05-19 15:52
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский