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

Вниз

MSSQL 7 i transacchiya   Найти похожие ветки 

 
Mamed   (2005-02-08 14:13) [0]

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.


 
ЮЮ ©   (2005-02-09 05:39) [1]

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;


 
Nikolay M. ©   (2005-02-09 09:58) [2]


> ЮЮ ©   (09.02.05 05:39) [1]

Ой, не хорошо это - рулить транзакциями с клиента... Имхо.


 
ЮЮ ©   (2005-02-09 10:50) [3]

>Nikolay M. ©   (09.02.05 09:58) [2]

да что ты? :) без try ... except, безусловно, нехорошо.
Connection.XXXTrans, интересно, для чего в public вынесли?
И каким, есле не на клиенте, образом можно выполнить пакет для вставки/корректировки/удаления данных?


 
Nikolay M. ©   (2005-02-09 11:21) [4]


> ЮЮ ©   (09.02.05 10:50) [3]
> >Nikolay M. ©   (09.02.05 09:58) [2]
>
> да что ты? :) без try ... except, безусловно, нехорошо.

Я не что, я кто.
Да хоть и с трай-ексепт. Во-первых, с идеологической точки зрения, пусть за целостность данных отвечает сервер, а не клиент. А, во-вторых, что, если дисконнект с сервером или еще какие глюки сети?


> И каким, есле не на клиенте, образом можно выполнить пакет
> для вставки/корректировки/удаления данных?

Хранимые процедуры на то есть. В сочетании с (псевдо)временными таблицами или XML можно добиться желаемого.


 
ЮЮ ©   (2005-02-09 11:30) [5]

>В сочетании с (псевдо)временными таблицами

Тогда уж вы Вы :)
псевдовременная таблица - это случайно не на клиенте, которому, не дело, с идеологической точки зрения, заниматься данными - для этого сервер есть? И как её, интересно, передать в XP?


 
Nikolay M. ©   (2005-02-09 11:45) [6]


> Тогда уж вы Вы :)

Ничего, что я на Вы и по фамилии? :)


> псевдовременная таблица - это случайно не на клиенте

Нет. Имею ввиду, что временная таблица - это обычная # или ##, а псевдовременная - это обычная таблица, постоянно существующая на сервере, в которую клиенты пишут некоторые подготовительные данные + свой @@SPID для последующего выполнения ХП.


> И как её, интересно, передать в XP?

А в ХП можно передать, например, XML, если это требуется.


 
Mamed   (2005-02-09 14:03) [7]

Ispravil bag:sql7Sp4 zapustil na servere i vse rabotal tak kak nado)



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

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

Наверх




Память: 0.48 MB
Время: 0.032 c
1-1109420012
ser35
2005-02-26 15:13
2005.03.13
как отобразить данные комбобоксов?


4-1102996884
school
2004-12-14 07:01
2005.03.13
диологи открытия-закрытия файлов


4-1107193525
Grigoryan
2005-01-31 20:45
2005.03.13
Скрыть папку, чтобы не было видно вообще


1-1109230829
3APA3A
2005-02-24 10:40
2005.03.13
Combobox


4-1107175604
mbIkola
2005-01-31 15:46
2005.03.13
Как определить факт закрытия сессии в терминальном режиме.