Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

Не работает ОТКАТ в ТРАНЗАКЦИИ   Найти похожие ветки 

 
jz6 ©   (2005-02-26 14:52) [0]

У меня на форме компоненты:
1)Database1:TDatabase
2)Query1:TQuery,
3)СheckBox1:TCheckBox;
4)Кнопка...

В Database1 -
1)AliasName - "Псевдоним1"(он зарегестрирован в BDE),
2)DatabaseName - "ИмяБазыДанных1",
3)Database1.Connected:=True;
4)Уровень транзакции - DirtyRead(об этом просит компилятор);

В Query1 -
1)DatabaseName - "ИмяБазыДанных1",
2)Query1.SQL - "Delete from ":ИмяБазыДанных1:Proba.db" where A=3"

Таблица - 3 поля типа Integer;

Мне надо чтобы если CheckBox1.Checked=True то транзакция завершается подтверждением если иначе - откатом.

При нажатии кнопки работает программа:

Database1.StartTransaction;
try
  Q.ExecSQL;
     if C.Checked=true
     then  
       begin
          Database1.Commit;
             ShowMessage("Подтверждение");
       end
else
      begin
        ShowMessage("Удаление данных не ведётся");
           Database1.Rollback;
             ShowMessage("Откат");
      end;

except
ShowMessage("Ошибка в выполнении удаления!!");
   Database1.Rollback;
    ShowMessage("Откат");
      Abort;
         end;
end;  

Если я снимаю галочку(СheckBox1.Checked=False) то Database1.Rollback(ОТКАТ) выполняется, но все равно данные в таблицы - удалены. Отката нет.

Я уверен что тут дело в самом SQL - операторе.

Он напрямую обращается к таблице, и никакие транзакции его не тревожат. Я долго возился с псевдонимами, но ничего не достиг.
Прошу помощи.


 
DSKalugin ©   (2005-02-26 15:48) [1]

псевдонимы в запросе не нужны
Query1.SQL.Text:="Delete from Proba where A=3";
Уровень изоляции транзакций надо ставить в
tiReadCommitted. Совсем не ясно о чем тебя просит компилятор
разница существенная.
Для tiDirtyRead читаются И неподтвержденные транзакции тоже
для tiReadCommitted только подтвержденные
и пиши красиво, хотя это дело стиля, конечно,но совсем не удобно читать

Database1.StartTransaction;
try
 Q.ExecSQL;
 if C.Checked then begin
   Database1.Commit;
   ShowMessage("Подтверждение");
 end
 else begin
   Database1.Rollback;
   ShowMessage("Удаление данных не ведётся. Откат");
 end;
except
 Database1.Rollback;  
 ShowMessage("Ошибка в выполнении удаления!!");
 Abort; //это еще зачем? вызови лучше raise
 end; //это еще зачем? лишняя
end;  

так сразу видно логику и лишний ЭНД :-)


 
Вольный Стрелок ©   (2005-02-26 16:18) [2]

paradox не поддерживает транзакции


 
jz6 ©   (2005-02-26 17:08) [3]

Спасибо за дельные предложения, Дмитрий!

Отката все равно нет. Даже не смешно.

"paradox не поддерживает транзакции" - может быть и так, но не хочу в это верить. Нигде такого не читал.


 
DiamondShark ©   (2005-02-26 21:28) [4]


> но не хочу в это верить

Это только горы можно силой веры двигать.
А транзакции если не поддерживаются, значит не поддерживаются. Совсем.


 
DiamondShark ©   (2005-02-26 21:42) [5]

Но они всё-таки поддерживаются. С ограничениями:

· For standard databases (Paradox, dBASE, FoxPro, Access) there is no automatic crash recovery or DDL-related actions such as table create, restructure, index creation, table/index deletion, and so on.
· To perform transactions on a Paradox table, a valid index must exist. Data cannot be rolled back on Paradox tables lacking an index.
· Inserts rolled back on dBase and FoxPro tables are actually only soft deletes.
· Local transaction do not work for temporary tables.

· Local transactions do not work for the Text driver (ASCII files).
· For Access, if you do not supply a user name and use user-level security you can only have one active transaction. Transactions are occurring at the driver level not at the database level.

Первый и последний пункт нас не интересует, а вот второй -- да.
Есть у таблицы индекс?


 
jz6 ©   (2005-03-01 02:06) [6]

"Есть у таблицы индекс?"

А вот и нету! Я его удалил давно, так как эта таблица - просто
пробная! Похоже на правду! Проверю!

Спасибо большое!

И вопрос: откуда черпаются такие данные о формате Paradox?



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

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
1-1110788986
Shuma
2005-03-14 11:29
2005.03.27
Размер ComboBox


1-1111061635
Быстрый Шу
2005-03-17 15:13
2005.03.27
Приведение типа Variant


1-1111063405
randomize
2005-03-17 15:43
2005.03.27
Проблема с компонентами


3-1109250563
Антоныч
2005-02-24 16:09
2005.03.27
Помогите составить SQL-запрос


3-1109325288
Mortal
2005-02-25 12:54
2005.03.27
Про тип Data в WinXP и Win98