Citation:
CREATE procedure [dbo].CpteCltHist_Insert
@CpteJumelle nvarchar (20) ,
@Denomination nvarchar (100) ,
@Devise nvarchar (3) ,
@DateOperation datetime ,
@Debit float ,
@Credit float ,
@RefOperation nvarchar (30) ,
@Employe smallint ,
@lect int=null output
as
Declare @Rows int,
@ErrNo Int,
@ErrMsg varchar(255),
@NumSerie numeric
Set Nocount off
Begin Transaction
Insert into CpteCltHist(CpteJumelle,Denomination,Devise,DateOperation,Debit,Credit,RefOperation,
Employe)values(@CpteJumelle,@Denomination,@Devise,@DateOperation,@Debit,@Credit,@RefOperation,
@Employe)
Set @ErrNo =@@error
If @ErrNo <> 0
Begin
Rollback Transaction
Set @lect=1
Set Nocount on
Return @lect --@ErrNo
End
Insert into AuditCpteCltHist(CpteJumelle,Denomination,Devise,SerieOp,DateOperation,Debit,Credit,RefOperation,
Employe,RowStatus)values(@CpteJumelle,@Denomination,@Devise,@DateOperation,@Debit,@Credit,@RefOperation,
@Employe,'I')
Set @ErrNo =@@error
If @ErrNo = 0
Begin
Commit Transaction
Set @lect=0
Set Nocount on
Return @lect --0
End
Else
Begin
Rollback Transaction
Set @lect=3
Set Nocount on
Return @lect --@ErrNo
End
'procedure pr inserer une operation de retrait d'argent
CREATE procedure [dbo].OpCaisA_Insert
@CpteClient nvarchar (20) ,
@DateOperation datetime ,
@Devise nvarchar (3) ,
@Debit float ,
@Credit float ,
@RefOperation nvarchar (20) ,
@Caisse nvarchar (10) ,
@CpteCaisse nvarchar (10) ,
@Description nvarchar (80) ,
@lect int=null output
as
Declare @Rows int,
@ErrNo Int,
@ErrMsg varchar(255)
Set Nocount off
Begin Transaction
Insert into OpCaisA(CpteClient,DateOperation,Devise,
Debit,Credit,RefOperation,Caisse,CpteCaisse,Employe,[Description]) values(@CpteClient,@DateOperation,@Devise,@Debit,@Credit,@RefOperation,@Caisse,@CpteCaisse,@Employe,@Description)
Set @ErrNo =@@error
If @ErrNo <> 0
Begin
Rollback Transaction
Set @lect=1
Set Nocount on
Return @lect
End
Insert into AuditOpCaisA(CpteClient,DateOperation,Devise,
Debit,Credit,RefOperation,Caisse,CpteCaisse,Employe,[Description],RowStatus) values(@CpteClient,@DateOperation,@Devise,@Debit,@Credit,@RefOperation,@Caisse,@CpteCaisse,@Employe,@Description,'I')
Set @ErrNo =@@error
If @ErrNo = 0
Begin
Commit Transaction
Set @lect=0
Set Nocount on
Return @lect
End
Else
Begin
Rollback Transaction
Set @lect=2
Set Nocount on
Return @lect --@ErrNo
End
J'ai ecrit des fonction en VB6 ki vt traiter chacune de ses procedures stockes. voici mon bout de code vb:
Citation:
CoonectionObject.BeginTrans
Lecture = CpteCltHist_Insert(SvCpteJumelle,SvDenomination,SvDevise,SvDateOperation,
SvDebit,SvCredit,SvRefOperation,SvEmploye)
If Lecture = 1 Then
CoonectionObject.RollbackTrans
End If
Lecture = OpCaisA_Insert (SvCpteClient,SvDateOperation,SvDevise,SvDebit,SvCredit,SvRefOperation,
SvCaisse,SvCpteCaisse,SvDescription )
If Lecture = 1 Then
CoonectionObject.RollbackTrans
End If
CoonectionObject.CommitTrans
L'idee est que la sil ya erreur los de l'insertion dans la table CptecltHist que automatique la transaction s'annule et qu'il nya plus insertion dans la table OpCaisA et Inversement. or je constate que malheusement il ya des fois ou cela se produit. je Voudrais savoir si ce probleme est lie a un conflit entre la fonction Transaction qui se trouve dans SQL Server et l'object Transaction de VB6. Merci pr votre comprehention.