Erreur d'exécution '3219'

Bonjour,

Je suis en cours de concevoir une petite application en VB6, Au moment de la sélection à partir du Combox d'un premier code, les données qui lui sont attribués d'affichent automatiquement. Or lorsque un deuxième code à partir toujours de ce Combox, le programme se plante et me renvoie le message suivant ( Erreur d'exécution '3219' : l'opération demandée n'est pas autorisée dans ce contexte)

Je m'explique plus :

ma tentative est de faire afficher dans chaque zone de texte les données la concernant, une fois le code adéquat est sélectionné à partir du combox. Les codes stockés dans cette combox sont ramenés d'un autre tableau des codes appelé TableauCodes. Parce que la feuille de saisie est liée à un autre tableau, appelé TableauExpédition

Private Sub Form_Load()

PoolConnection

SQLs = "select * from TableauExpedition"

If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

Adodc1.RecordSource = SQLs
Set DataGrid1.DataSource = Adodc1

DataGrid1.AllowAddNew = False
DataGrid1.AllowUpdate = False


lblN.Caption = Adodc1.Recordset.RecordCount
Adodc1.Refresh


'--------------------------------------------------



SQLs = "Select * from TableauCodes " & " order by CODEPDTs asc"

If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


Do Until RS.EOF

cmbCodePdt.AddItem (RS![CODEPDTs])

RS.MoveNext

Loop



End Sub

Private Sub cmbCodePdt_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If cmbCodePdt = "" Then
MsgBox "Veuillez sélectionner le Code du Produit", vbCritical + vbMsgBoxRight + vbInformation, "Info !"
cmbCodePdt.SetFocus
Exit Sub
End If



Dim Z
Z = CLng(cmbCodePdt)





SQLs = "Select * from TableauCodes " & " where CODEPDTs = " & CLng(cmbCodePdt) & ""

If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

RS.MoveFirst

TPdt = RS![PRODUITs]
TRefEmbal = RS![REFEMBALs]
TMarque = RS![MARQUEs]
TCalibre = RS![CALIBREs]
TNbreColis = RS![NBRECOLISs]
TTypPalet = RS![TYPALETs]



TNbrePalet.SetFocus
End If


End Sub


Merci pour votre aide

A plus

10 réponses

  1. Bonjour,

    sur quelle ligne s'arrete le programme ????

    SQLs = "Select * from TableauCodes " & " where CODEPDTs = " & CLng(cmbCodePdt) & "" hors sujet peut-etre, mais devrait etre ecrit comme suit:
    SQLs = "Select * from TableauCodes " & " where CODEPDTs = '" & CLng(cmbCodePdt) & "';"

    A+
    1
    1. Bonjour l'Ami,

      le programme s'arrête sur la ligne :

      If RS.State = adStateOpen Then RS.Close


      surtout sur

      RS.Close


      A plus
      0
      1. Re Bonjour l'Ami,

        En vérifiant la marche de l'application avec (;) inséré dans
        la requête SQLs, le résultat était positif.

        Merci

        A cette occasion, je vous soumets un autre problème au niveau des totaux :

        en saisissant les données, sur des étiquettes en bas du tableau s'affichaient les totaux. Seulement au moment du chargement de la feuille, les totaux ne s'affichent pas, et le programme me renvoie le message :

        Erreur d'exécution '94'
        Utilisation non autorisée de NULL

        les code sont comme suite :

        Private Sub Form_Load()
        
        PoolConnection
        
        SQLs = "select * from TableauExpedition " & " order by NPALET asc"
        
        If RS.State = adStateOpen Then RS.Close
        RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
        
        Adodc1.RecordSource = SQLs
        Set DataGrid1.DataSource = Adodc1
        
        DataGrid1.AllowAddNew = False
        DataGrid1.AllowUpdate = False
        
        
        lblN.Caption = Adodc1.Recordset.RecordCount
        Adodc1.Refresh
        
        
        If lblN.Caption <= 33 Then
        TNExp = RS![EXPN]
        TDateExp = RS![DATEEXP]
        TTransporteur = RS![TRANSPORTEUR]
        TMatriculeRemorque = RS![MATRICULEREMORQUE]
        lblTNbrePalet.Caption = RS![TNbrePalet]
        'lblTNbreColis.Caption = RS![TNbreColis]
        'lblTKgBrut.Caption = RS![tkgbruts]
        'lblTKgNet.Caption = RS![tkgnets]
        
        Else
        TNExp = ""
        TDateExp = ""
        TTransporteur = ""
        TMatriculeRemorque = ""
        lblTNbrePalet.Caption = ""
        lblTNbreColis.Caption = ""
        lblTKgBrut.Caption = ""
        lblTKgNet.Caption = ""
        
        End If
        
        
        end sub


        A plus l'Ami
        0
        1. Bonjour,

          Avez-vous des champs a valeurs null ?? Faire le test not isNull avant.
          0
          1. Bonjour,

            J'ai vérifié ce que je peux, mais la seule chose qui me faisait douter est que
            sur la première ligne de la table ( dans la base des données ) à la case qui correspond au total est vide ( je crois c'est là où cette valeur est nulle )

            A votre avis est ce possible ?

            A plus
            0
            1. Re Bonjour l'Ami,

              Je crois que je commence à déconner. J'ai essayer avec Not IsNull, comme il est
              exposé ci dessous. Toujours au chargement de la feuille, seule la valeur ZERO (0)
              qui est affichée.

              Dim Ok, Ok1, Ok2, Ok3  As Integer
              
              Ok = 0
              Ok1 = 0
              Ok2 = 0
              Ok3 = 0
              
              Dim TPalet, TColis, TKGB, TKGN As Integer
              
              TPalet = RS![TNbrePalet]
              TColis = RS![TNbreColis]
              TKGB = RS![TKGBRUTS]
              TKGN = RS![TKGNETS]
              
              If Not IsNull(RS![TNbrePalet]) Then
              lblTNbrePalet.Caption = TPalet
              Else
              lblTNbrePalet.Caption = Ok
              End If
              
              If Not IsNull(RS![TNbreColis]) Then
              lblTNbreColis.Caption = TColis
              Else
              lblTNbreColis.Caption = Ok1
              End If
              
              If Not IsNull(RS![TKGBRUTS]) Then
              lblTKgBrut.Caption = TKGB
              Else
              lblTKgBrut.Caption = Ok2
              End If
              
              If Not IsNull(RS![TKGNETS]) Then
              lblTKgNet.Caption = TKGN
              Else
              lblTKgNet.Caption = Ok3
              End If


              A plus
              0
              1. Bonjour,

                mettez un point d'arret apres le dernier test et regardez la valeur des champs de votre requete sql.
                0
                1. Bonjour l'Ami

                  Sincèrement je ne sais pas comment. Si vous pouvez m'expliquer plus

                  Merci d'avance

                  A plus
                  0
                  1. Bonjour,
                    Pour mettre un point d'arret programme: click gauche sur la barre verticale a gauche de la fenetre d'un module de code. Pour visualiser la valeur d'une variable a la suite d'un arret programme sur point d'arret, placer le curseur souris sur la variable.

                    image d'un point d'arret avec visu valeur d'une variable:

                    https://www.cjoint.com/c/CGekAugUuJB

                    A+
                    0