Vb6:erreue d'execution '91'

Bonjour,
erreur d'execution'91'
variable objet ou variable bloc With non defini
et Rsmq.AddNew coloré en jaune
??? c quoi ma faute???
Configuration: Windows XP Internet Explorer 7.0

12 réponses

  1. Je te passe un extrait de la msdn library visual studio 6.0 ça pourra t'éclairé j'espère:
    Les méthodes de transaction gèrent de la manière suivante le traitement des transactions au cours d'une session définie par un objet Workspace : 
    
    BeginTrans commence une nouvelle transaction.
    
    
    CommitTrans met fin à la transaction en cours et enregistre les modifications.
    
    
    Rollback met fin à la transaction en cours et restaure les bases de données de l'objet Workspace dans l'état dans lequel elles étaient au début de la transaction en cours. 
    Syntaxe
    
    workspace.BeginTrans | CommitTrans [dbForceOSFlush] | Rollback
    
    L'espace réservé workspace est une variable objet qui représente l'objet Workspace contenant les bases de données qui font l'objet de transactions.


    Et maintenant l'exemple donné par cette même msdn:

    Sub BeginTransX()
    
       Dim strName As String
       Dim strMessage As String
       Dim wrkDefault As Workspace
       Dim dbsNorthwind As Database
       Dim rstEmployees As Recordset
    
       ' Obtient l'objet Workspace par défaut.
       Set wrkDefault = DBEngine.Workspaces(0)
       Set dbsNorthwind = OpenDatabase("Comptoir.mdb")
       Set rstEmployees = _
          dbsNorthwind.OpenRecordset("Employés")
    
       ' Démarre la transaction externe.
       wrkDefault.BeginTrans
       ' Démarre la transaction principale.
       wrkDefault.BeginTrans
    
       With rstEmployees
    
          ' Effectue un boucle sur le jeu 
          ' d'enregistrements et demande à l'utilisateur 
          ' s'il souhaite changer la fonction d'un employé
          ' précisé.
          Do Until .EOF
             If !Fonction = "Représentant(e)" Then
                strName = !Nom & ", " & !Prénom
                strMessage = "Employé : " & strName & vbCr & _
                   "Changer la fonction en Responsable comptes ?"
    
                ' Change la fonction de l'employé indiqué.
                If MsgBox(strMessage, vbYesNo) = vbYes Then
                   .Edit
                   !Fonction = "Responsable comptes"
                   .Update
                End If
             End If
    
             .MoveNext
          Loop
    
          ' Demande si l'utilisateur souhaite valider 
          ' toutes les modifications apportées ci-dessus.
          If MsgBox("Enregistrer toutes les modifications ?" _
                , vbYesNo) = vbYes Then
             wrkDefault.CommitTrans
          Else
             wrkDefault.Rollback
          End If
    
          ' Imprime les données en cours dans le jeu 
          ' d'enregistrements.
          .MoveFirst
          Do While Not .EOF
             Debug.Print !Nom & ", " & !Prénom & _
                " - " & !Fonction
             .MoveNext
          Loop
    
          ' Révoque toutes les modifications effectuées 
          ' par l'utilisateur pour cette démonstration.
          wrkDefault.Rollback
          .Close
       End With
    
       dbsNorthwind.Close
    
    End Sub


    C'est l'exemple donné par la msdn library pour l'utilisation des transactions.

    Donc il te faut instancier un objet workspace, n'hésite pas à te renseigner sur ce sujet car, je ne maitrise pas trop les workspace.

    A priori tu peux utiliser l'objet workspace par défaut comme il est fait ici.
    0
    1. bonjourrr
      c a dire quoi ??? que dois je faire ???
      0
      1. Bonjour,

        Les transactions se font sur un objet de type Workspace voilà sans doute pourquoi ça ne marche pas !

        Cdt
        0
        1. Alors la... j'ai jamais eu ce problème auparavant :-/ un peu de recherche s'impose!
          0
          1. merci de votre aide mes amis j'ai bien vérifierm et sa va et sa va mnt :))
            mé j'ai un autre pb :( qd je clik sur ok ^pour enregistrer l'ajout d'un donner un msg d'erreur d'exécution
            [microsoft][pilote odbc microsoft access] definition de l'attribut impossible a ce stage
            Public Sub Enregistrer(Rs)
            
            CnEle.BeginTrans
               If (VarMAJ = "A") Then
                  Rs.UpdateBatch
               End If
               If VarMAJ = "M" Then
                  Message.Caption = "ÍÐÇÑí"
                  Message.Label1.ForeColor = 32768
                  Message.Label1.Caption = "åá ÊÑíÏ ÊÓÌíá åÐå ÇáãÚáæãÇÊ ¿"
                  Message.Show 1
                  If RMessage = 1 Then
                     Rs.UpdateBatch
                     Rs.MoveNext
                     Rs.MovePrevious
                  Else
                     Rs.CancelUpdate
                  End If
               End If
               If (VarMAJ = "S") Then
                  If Rs.RecordCount <> 0 Then
                     Message.Caption = "ÍÐÇÑí"
                     Message.Label1.ForeColor = 192
                     Message.Label1.Caption = "åá ÃäÊ ãÊÄßÏ ÍÐÝ åÐå ÇáãÚáæãÇÊ ¿"
                     Message.Show 1
                     If RMessage = 1 Then
                        Rs.Delete
                        Rs.UpdateBatch
                     End If
                  End If
               End If
            CnEle.CommitTrans
            
            
            
            End Sub


            celui en gras coloré en jaune chez moi???
            0
            1. Slt
              vous avez bel et bien déclarer tes objets mais je ne voie pas leurs instenciation un truc du genre
              Public rsmq As RecordSet
              rsmq = new RecordSet
              


              pour dire vrai moi je n'ai jamais utilisé les recordset de la façon donc vous le faites voici ce que je fais d'habitute
              j'inporte la référence Microsoft ActiveX Data Object 2.0 Library
              et là je déclare mes objets comme suit.
              Public adoCon As ADODB.Connection
              Pubic rsmq As ADODB.RecordSet 
              
              puis avant de les utiliser je les instancie
              adoCon = new ADODB.Connection
              rsmq = New ADODB.RecordSet
              
              ...
              cdlt.
              ;-)
              
              0
              1. Merci,
                Je ne suis pas sur de mon coup mais essaie la syntaxe suivante :

                Tu remplaces les lignes :

                   Rsmq.AddNew
                   Text2.Text = codmarq


                par:

                With Rsmq
                    .AddNew
                    !codmarq = Text2.Text
                    .Update
                End With


                Dis nous si ça marche.

                Cdt
                0
                1. Public CnEle As Connection
                  Public Commande As Integer
                  Dim indic As Integer
                  Public RMessage As Long
                  Public VarMAJ, FenActive As String
                  Public RsMqNum, RsTypNum, RsSerNum, RsUtlNum As Recordset
                  Public Rstyp As Recordset
                  Public Rsmq As Recordset
                  Public RsSer As Recordset
                  Public Rsutl As Recordset
                  Public Rsmat As Recordset
                  0
                  1. Bonjour,

                    Serait il possible d'avoir la déclaration de tes variables notamment la déclaration de Rsmq stp.

                    Cdt
                    0
                    1. Private Sub Form_Load()
                      Set Text1.DataSource = Rsmq
                      'pour l'incrementation dans la base
                      Set Text2.DataSource = Rsmq
                      indic = 0
                      
                      If VarMAJ = "A" Then
                         Fmarque.Caption = "ÅÖÇÝÉ ÇáÑãÜÜÒ"
                         Command1.Visible = True
                         Command8.Visible = False
                         Command9.Visible = False
                         Command10.Visible = False
                         Command11.Visible = False
                         
                         OuvBase RsMqNum, "SELECT * From marque order by cod_marq"
                      
                         If RsMqNum.RecordCount <> 0 Then
                         'aller au derniere
                            RsMqNum.MoveLast
                            'il va lire le dernier enregistrement : fields(lire)
                            codmarq = RsMqNum.Fields("cod_marq") + 1
                         Else
                          'si c'est le 1er enregistrement
                            codmarq = 1
                         End If
                       
                         Rsmq.AddNew
                         Text2.Text = codmarq
                      End If
                      If VarMAJ = "M" Then
                         Fmarque.Caption = "ÊÍííä ÈíÇä ÇáÜÜÑãÒ"
                         Command1.Visible = False
                         Command8.Visible = True
                         Command9.Visible = True
                         Command10.Visible = True
                         Command11.Visible = True
                      End If
                      
                      If VarMAJ = "S" Then
                         Fmarque.Caption = "ÍÐÝ ÇáÑãÜÒ "
                         Command1.Visible = True
                         Command8.Visible = False
                         Command9.Visible = False
                         Command10.Visible = False
                         Command11.Visible = False
                         Text1.Locked = True
                      End If
                      End Sub

                      celle en gras : coloré en jaune
                      1
                      1. j'ai bien verifier et normalement toute est bon
                        ???
                        0
                        1. Tu as utilisé un variable dont VB ne connait pas la valeur, c'est surement une faute de frappe de ta part.
                          0