![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MSSQL 7 i transacchiya [D5]
Mamed © (2005-02-08 14:13:00)U menya na Win95 kompyuteri rabotaet MSSQL 7 Desktop Edition.
V Programme ya ispolzuyu ADO componenti.Kod priblizitelno takoy
var Q:TAdoQuery;
.......
With Q Do
Begin
Connection.BeginTrans;
Active:=false;
SQL.Append('SELECT FIELD1 FROM TABLE1');
Active:=True;
Append;
FieldByname('FIELD1').asstring:='FFF1';
Post;
Active:=false;
SQL.Append('SELECT FIELD2 FROM TABLE2');
Active:=True;
Append;
FieldByname('FIELD2').asstring:='FFF2';
Post;
Active:=false;
SQL.Append('SELECT FIELD3 FROM TABLE3');
Active:=True;
Append;
FieldByname('FIELD3').asstring:='FFF3';
Post;
Connection.Committrans;
End;
Posle Takogo koda Tolko poslednoe izmenenie iz trannsactiona vipolyaetsya ostalnie ostayetsya.Toje samoy Proga S MSSQL 2000 rabotaet normalno.
Mamed (2005-02-09 14:03:00) [1]Ispravil bag:sql7Sp4 zapustil na servere i vse rabotal tak kak nado)
Nikolay M. (2005-02-09 11:45:00) [2]
> Тогда уж вы Вы :)
Ничего, что я на Вы и по фамилии? :)
> псевдовременная таблица - это случайно не на клиенте
Нет. Имею ввиду, что временная таблица - это обычная # или ##, а псевдовременная - это обычная таблица, постоянно существующая на сервере, в которую клиенты пишут некоторые подготовительные данные + свой @@SPID для последующего выполнения ХП.
> И как её, интересно, передать в XP?
А в ХП можно передать, например, XML, если это требуется.
ЮЮ (2005-02-09 11:30:00) [3]>В сочетании с (псевдо)временными таблицами
Тогда уж вы Вы :)
псевдовременная таблица - это случайно не на клиенте, которому, не дело, с идеологической точки зрения, заниматься данными - для этого сервер есть? И как её, интересно, передать в XP?
Nikolay M. (2005-02-09 11:21:00) [4]
> ЮЮ © (09.02.05 10:50) [3]
> >Nikolay M. © (09.02.05 09:58) [2]
>
> да что ты? :) без try ... except, безусловно, нехорошо.
Я не что, я кто.
Да хоть и с трай-ексепт. Во-первых, с идеологической точки зрения, пусть за целостность данных отвечает сервер, а не клиент. А, во-вторых, что, если дисконнект с сервером или еще какие глюки сети?
> И каким, есле не на клиенте, образом можно выполнить пакет
> для вставки/корректировки/удаления данных?
Хранимые процедуры на то есть. В сочетании с (псевдо)временными таблицами или XML можно добиться желаемого.
ЮЮ (2005-02-09 10:50:00) [5]>Nikolay M. © (09.02.05 09:58) [2]
да что ты? :) без try ... except, безусловно, нехорошо.
Connection. XXXTrans, интересно, для чего в public вынесли?
И каким, есле не на клиенте, образом можно выполнить пакет для вставки/корректировки/удаления данных?
Nikolay M. (2005-02-09 09:58:00) [6]
> ЮЮ © (09.02.05 05:39) [1]
Ой, не хорошо это - рулить транзакциями с клиента... Имхо.
ЮЮ (2005-02-09 05:39:00) [7]SQL.Append('SELECT FIELD1 FROM TABLE1');
...
SQL.Append('SELECT FIELD3 FROM TABLE3');
посмотри на результирующий SQL.Text :)
а почему вместо этого изврата, не написать просто
Connection.BeginTrans;
try
Q.SQL.Text := 'INSERT INTO Table1(FIELD1) VALUES(:FIELD1)';
Q.Parameters[0].Value := 'FFF1';
Q.ExecSQL;
...
Q.SQL.Text := 'INSERT INTO Table3(FIELD3) VALUES(:FIELD3)';
Q.Parameters[0].Value := 'FFF3';
Q.ExecSQL;
Connection.Committrans;
except
Connection.RollbackTrans;
end;
end;