IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

probleme utilisation de transaction entre vb6 et ms sql server 2000


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 9
    Points : 8
    Points
    8
    Par défaut probleme utilisation de transaction entre vb6 et ms sql server 2000
    Slt J'ai un probleme avec l'utilisation des transactions entre vb6 et ms sql server 2000. je m'explique par un example. J'ai 2 procedures stockees coe suit :
    'insertion de l'historique des transactions d'un client
    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:

    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.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 852
    Points : 52 992
    Points
    52 992
    Billets dans le blog
    6
    Par défaut
    Il ne faut pas gérer les transactions A LA FOIS sur le client et sur le serveur. Vous n'arriverez pas à vous en sortir.

    Si vous voulez de la performances, gérez les transactions uniquement sur le serveur. Rtournez simplement un code d'erreur en cas d'annulation (RETURN -1 par exemple).

    A +

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    ok je crois sincerement ke jai pas vraiment le choix. S'il nya pas une autre soluce je serais oblige de gerer mes transactions slt o niveau serveur. Merci pour ton eclairage.

Discussions similaires

  1. [CR XI] Probleme passage de Variables entre VB6 et Crystal XI
    Par ACIDEV dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 10/02/2011, 09h41
  2. Réponses: 4
    Dernier message: 16/09/2009, 15h21
  3. utiliser seek pour lire un enregistrement indexé sql server 2000
    Par fidelio2007 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/09/2007, 00h32
  4. Utilisation DU PMT d un prét dans SQL SERVER 2000
    Par aziz2081 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/01/2007, 09h07
  5. [VB6] ADO et SQL Server 2000 Exemples?
    Par Vesta dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/05/2006, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo