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

  • Votes
  • Date
  • Date décroissante
  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. Tu as utilisé un variable dont VB ne connait pas la valeur, c'est surement une faute de frappe de ta part.
      1. Bonjour,

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

        Cdt
        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
          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
            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.
              ;-)
              
              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???
                1. Alors la... j'ai jamais eu ce problème auparavant :-/ un peu de recherche s'impose!
                  1. Bonjour,

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

                    Cdt
                    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.