Erreur d'exécution '3219'

mohalesage Messages postés 162 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. mohalesage Messages postés 162 Statut Membre 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
  3. mohalesage Messages postés 162 Statut Membre 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
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Avez-vous des champs a valeurs null ?? Faire le test not isNull avant.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mohalesage Messages postés 162 Statut Membre 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
  7. mohalesage Messages postés 162 Statut Membre 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
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    mettez un point d'arret apres le dernier test et regardez la valeur des champs de votre requete sql.
    0
  9. mohalesage Messages postés 162 Statut Membre 1
     
    Bonjour l'Ami

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

    Merci d'avance

    A plus
    0
  10. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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