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

Вниз

Обработка транзакций   Найти похожие ветки 

 
Serge1   (2004-05-13 12:51) [0]

Помогите разобраться!
Почему то не сохраняется результат выполнения запросов.
Программа работает с базой данных MS SQL SERVER 7.0.
Фрагмент программы:

procedure TFormRouteSheetEdit.ToolButtonSaveClick(Sender: TObject);
var
  Zapros: TADOQuery;
begin
  Zapros:=TADOQuery.Create(FormRouteSheetEdit);
  Zapros.Connection:=ADOConnection1;
  Zapros.Connection.BeginTrans;
  Zapros.SQL.Clear;
  Zapros.SQL.Add("UPDATE [Маршрутные листы]");
  Zapros.SQL.Add("SET ... ");
  Zapros.SQL.Add("WHERE Номер = ...");
  try
     Zapros.ExecSQL;
  except
     Zapros.Connection.RollbackTrans;
     Zapros.Free;
     exit;
  end;
  Zapros.SQL.Clear;
  Zapros.SQL.Add("DELETE FROM [Табличная часть маршрутных листов]");
  Zapros.SQL.Add("WHERE ([Номер маршрутного листа] = ... )");
  Zapros.ExecSQL;
  for NumberOfLine:=1 to N do begin
     Zapros.SQL.Clear;
     Zapros.SQL.Add("INSERT INTO [Табличная часть маршрутных листов]");
     Zapros.SQL.Add("([Номер маршрутного листа], ...");
     Zapros.SQL.Add("VALUES ("..., ...");
     try
        Zapros.ExecSQL;
     except
        if Zapros.Connection.InTransaction
          then Zapros.Connection.RollbackTrans;
        Zapros.Free;
        exit;
     end;
  end;
  if Zapros.Connection.InTransaction
    then Zapros.Connection.CommitTrans;
// После этого ничего не сохраняется !!!
  Zapros.Free;
  Close;
end;


 
Курдль ©   (2004-05-13 12:53) [1]

А зачем фрикать Zapros по Except?


 
Курдль ©   (2004-05-13 12:59) [2]

А в пошаговом режиме программа выходит на
then Zapros.Connection.CommitTrans;?


 
Serge1   (2004-05-13 12:59) [3]

Для того, чтобы освободить память занимаемую Zapros"ом.


 
Serge1   (2004-05-13 13:01) [4]

Да выходит и then Zapros.Connection.CommitTrans; выполняется, а результат ноль.


 
Курдль ©   (2004-05-13 13:08) [5]

Перехватить запрос на сервер естьчем? Или, на крайняк, вывести в Memo текст перед Zapros.ExecSQL; и попробовать его прокатать через интерактивный SQL-инструмент.


 
sniknik ©   (2004-05-13 13:28) [6]

замени
BeginTrans/CommitTrans/RollbackTrans
на анологичное в SQL эквиваленте. ;о)
BEGIN TRANSACTION/...

а TADOQuery на TADOCommand

+ можеш обьеденить некоторые команды в пакеты (старт транзакции с первой командой к примеру ... ets)


 
Johnmen ©   (2004-05-13 13:30) [7]

>Serge1  

Можешь себе представить, что будет, если отработает первый except ? :)))
Общий подход (описанный кстати в хелпе):
<стартуем транзакцию>
try
 <модификация данных в БД>
 ...
 <подтверждаем транзакцию>
except
 <откатываем транзакцию>
 end;


 
Курдль ©   (2004-05-13 13:34) [8]


> Можешь себе представить, что будет, если отработает первый
> except ? :)))

А что? Откатится транзакция, освободятся ресурсы и процедура завершится.
Ему нельзя <подтверждаем транзакцию> до того, как 2 записи в разных таблицах не уйдут к БД!


 
Johnmen ©   (2004-05-13 13:38) [9]

>А что? Откатится транзакция, освободятся ресурсы и процедура завершится.

Да ? Не всё так просто...
Вот скажи для начала, в рамках какой транзакции будет выполнено
Zapros.ExecSQL;
на
Zapros.SQL.Add("DELETE ...
?


 
Курдль ©   (2004-05-13 13:47) [10]


> Вот скажи для начала, в рамках какой транзакции будет выполнено
> Zapros.ExecSQL;

Единственной и неповторимой, открытой с помощью Zapros.Connection.BeginTrans;


 
Johnmen ©   (2004-05-13 13:59) [11]

>Единственной и неповторимой, открытой с помощью Zapros.Connection.BeginTrans;

Да ? По-моему она уже завершена на данный момент откатом...
:)))


 
MU   (2004-05-13 14:14) [12]

>>Johnmen ©
Там Exit стоит, нет?


 
Johnmen ©   (2004-05-13 14:24) [13]

>>MU
Там Exit стоит, да!



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

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

Наверх




Память: 0.47 MB
Время: 0.022 c
4-1083320755
svetlana
2004-04-30 14:25
2004.06.06
Хэндл строки состояния чужого окна


4-1082740726
jedy
2004-04-23 21:18
2004.06.06
Работа с WinHelp на уровне текста


1-1085330206
k@rt
2004-05-23 20:36
2004.06.06
Удаление символа из PChar


1-1084917196
shek
2004-05-19 01:53
2004.06.06
Получить значение атрибута в XML


14-1085133993
Q
2004-05-21 14:06
2004.06.06
Windows для профессионалов Дж.Рихтер





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