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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.035 c
1-1110449454
Teuton
2005-03-10 13:10
2005.03.27
Ctrl+Del в DBGrid


1-1110868049
Asail
2005-03-15 09:27
2005.03.27
Некорректная работа BiDiMode ....


3-1109061060
Ragazor
2005-02-22 11:31
2005.03.27
Как правильно настроить Paradox базу через ODBC?


3-1109060114
Term
2005-02-22 11:15
2005.03.27
Как открыть OLE документ из BLOB-поля


1-1110744759
DremLIN
2005-03-13 23:12
2005.03.27
Delphi, CLX-проект, handle





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский