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

VB 6 et antérieur Discussion :

[]débogage sur une requête dasn visual basic


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    []débogage sur une requête dasn visual basic
    [balises de codes ajouter par elifqaoui - Merci de lire les règles du forum]
    http://www.developpez.net/forums/vie...opic.php?t=334


    Bonjour,
    Je conçois un programme sur Visual Basic dont j'ai fait la liaison avec une base de données ACCESS. Dans mon programme, j'écris une requête en SQL mais il débogue la dessus, et je ne sais pas quel est le problème.

    Si quelqu'un peut me dire quel est l'erreur sur ma requête que voici :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Strrequete As String
    'création du recordset
    Set Rs = New Recordset
    'Ouverture à partir d'une requête
    Strrequete = "Select COD_ART, DAT_MVT, NUM_PIE, TYP_PIE, NUM_SER_PIE, QTE_LIV, CLT_FAC," _
    & " CLT_LIV, NOM, DGN From MOUVEMENT, ARTICLES, CLIENTS" _
    & " Where ARTICLES.COD_ART = MOUVEMENT.COD_ART And MOUVEMENT.CLT_FACT = CLIENTS.COD_CLT" _
    & " And MOUVEMENT.COD_LBR =" & txtDCA.Text
     
    Rs.Open Strrequete, Cn, adOpenStatic, adLockPessimistic


    Merci de me répondre.

  2. #2
    Membre régulier
    Re: débogage sur une requête dasn visual basic
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Strrequete As String
    'création du recordset
    Set Rs = New Recordset
    'Ouverture à partir d'une requête
    Strrequete = "Select [quelletable].COD_ART, DAT_MVT, NUM_PIE, TYP_PIE, NUM_SER_PIE, QTE_LIV, [quelletable].CLT_FAC," _
    & " CLT_LIV, NOM, DGN From MOUVEMENT, ARTICLES, CLIENTS" _
    & " WHERE (ARTICLES.COD_ART = MOUVEMENT.COD_ART) And (MOUVEMENT.CLT_FACT = CLIENTS.COD_CLT) " _
    & " And (MOUVEMENT.COD_LBR = ' " & txtDCA.Text & " ') "
     
    Rs.Open Strrequete, Cn, adOpenStatic, adLockPessimistic

    dans le cas de plusieurs table, il vaut mieux préciser le nom de la table suivi du nom du champ.
    A Violin,a table,a chair,and a bowl of fruit,what else a man need to be happy(Albert Einstein)
    (Windows, VB, PHP, MySQL et Access)

  3. #3
    Membre du Club
    je suis désolé elifqaoui, mais la solution que tu m'as donné ne fonctionne pas.

    merci quand même

  4. #4
    Expert confirmé
    Elle doit pourtant marcher...

    N'oublie pas de specifier le nom de la table pour les champs dont le nom existe dans plusieurs tables...

    ex:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Strrequete = "Select Articles.COD_ART, DAT_MVT, NUM_PIE, TYP_PIE, NUM_SER_PIE, QTE_LIV, MOUVEMENT.CLT_FACT," _ 
    & " CLT_LIV, NOM, DGN From MOUVEMENT, ARTICLES, CLIENTS" _ 
    & " WHERE (ARTICLES.COD_ART = MOUVEMENT.COD_ART) And (MOUVEMENT.CLT_FACT = CLIENTS.COD_CLT) " _ 
    & " And (MOUVEMENT.COD_LBR = ' " & txtDCA.Text & " ') "
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde" (Adolphe Thiers)

  5. #5
    Membre régulier
    Citation Envoyé par mcay
    je suis désolé elifqaoui, mais la solution que tu m'as donné ne fonctionne pas.

    merci quand même
    t'es sur, ton erreur c que le Champ COD_CLT que tu selectionnes peut avoir deux tables comme source, dans ce cas il faut que tu précises le nom de la table suivi du nom du champ dans le select et c généralement préférable si on utilise plus d'une table meme s'il n'y a pas de conflit entre les noms des champ.
    A Violin,a table,a chair,and a bowl of fruit,what else a man need to be happy(Albert Einstein)
    (Windows, VB, PHP, MySQL et Access)

  6. #6
    Expert confirmé
    Fais voir le code!!!
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde" (Adolphe Thiers)

  7. #7
    Nouveau membre du Club
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Strrequete As String 
    'création du recordset 
    Set Rs = New Recordset 
    'Ouverture à partir d'une requête 
    Strrequete = "Select MOUVEMENT.COD_ART, DAT_MVT, NUM_PIE, TYP_PIE, NUM_SER_PIE, QTE_LIV, CLT_FAC," _ 
    & " CLT_LIV, NOM, DGN From MOUVEMENT, ARTICLES, CLIENTS" _ 
    & " Where (ARTICLES.COD_ART = MOUVEMENT.COD_ART) And (MOUVEMENT.CLT_FACT = CLIENTS.COD_CLT)" _ 
    & " And (MOUVEMENT.COD_LBR = '" & txtDCA.Text & " ') " 
     
     
    Rs.Open Strrequete, Cn, adOpenStatic, adLockPessimistic

    Utilise la balise code!!

  8. #8
    Expert confirmé
    1) c'est CLT_FAC ou CLT_FACT???
    2) Pour CLT_FAC, faudrait aussi préciser la table.

    de maniere generale, je te conseille de preciser la table pour tous les champs, c'est plus sécurisant...
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde" (Adolphe Thiers)

  9. #9
    Membre du Club
    excusez moi, j'y penserai pour la balise code.

    En fait, je pense que le problème est Select "MOUVEMENT.COD_ART", car je viens d'essayer sur access directement

  10. #10
    Membre du Club
    CLT_FAC se trouve que dans une table

  11. #11
    Membre régulier
    Citation Envoyé par mcay
    excusez moi, j'y penserai pour la balise code.

    En fait, je pense que le problème est Select "MOUVEMENT.COD_ART", car je viens d'essayer sur access directement
    c'est ce que j'ai essayé de te faire comprendre avant
    A Violin,a table,a chair,and a bowl of fruit,what else a man need to be happy(Albert Einstein)
    (Windows, VB, PHP, MySQL et Access)

  12. #12
    Expert confirmé

    Pourquoi ne pas ecrire systèmatiquement le nom de la table associée aux champs sélectionnés
    pour économiser de l'encre ou pour chercher les ennuis
    Exactement, moi je précise toujours les noms des tables, avec un petit alias pour economiser l'encre (en général la 1ere lettre de la table et 1,2,3 etc... si ambiguité). Bon c'est sur que si t'as 50 tables, c'est plus technique
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde" (Adolphe Thiers)

  13. #13
    Expert éminent
    Citation Envoyé par grafikm_fr
    Bon c'est sur que si t'as 50 tables, c'est plus technique
    et 50 fois plus de chance d'avoir des erreurs de ce genre
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  14. #14
    Membre du Club
    Bonjour,

    Sur chaque champs sélectionné, j'ai précisé les tables, et ça ne fonctionne toujours pas maintenant le message d'erreur est : Aucune valeur donnée pour un ou plusieurs des paramètres requis.

  15. #15
    Expert éminent
    Fais voir ta nouvelle requete
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  16. #16
    Membre du Club
    voila la nouvelle requête :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Private Sub cmdOk_Click()
     
    Dim Strrequete As String
    'création du recordset
    Set Rs = New Recordset
    'Ouverture à partir d'une requête
    Strrequete = "Select MOUVEMENT.COD_LBR, MOUVEMENT.COD_ART, MOUVEMENT.DAT_MVT," _
    & " MOUVEMENT.TYP_PIE, MOUVEMENT.NUM_SER_PIE, MOUVEMENT.NUM_PIE, MOUVEMENT.CLT_FAC, MOUVEMENT.CLT_LIV," _
    & " MOUVEMENT.QTE_LIV, ARTICLES.DGN, CLIENTS.NOM" _
    & " From CLIENTS INNER JOIN(ARTICLES INNER JOIN MOUVEMENT ON ARTICLES.COD_ART =" _
    & " MOUVEMENT.COD_ART) ON CLIENTS.COD_CLT = MOUVEMENT.CLT_FAC" _
    & " Where MOUVEMENT.COD_LBR =" & txtDCA.Text
     
    Rs.Open Strrequete, Cn, adOpenStatic, adLockPessimistic

  17. #17
    Membre du Club
    et mon nouveau message d'erreur est : type de données incompatibles dans l'expression du critère

  18. #18
    Expert éminent
    On ne le repetera jamais assez
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    & " Where MOUVEMENT.COD_LBR ='" & txtDCA.Text & "'"


    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  19. #19
    Membre du Club
    Oh merci beaucoup, là j'ai un autre débogage, je regarde d'abord ce que c'est et je vous dirai ensuite, mais encore merci.

  20. #20
    Membre du Club
    Je crois que je dois changer le type de la date parce qu'il me dit type incompatible pour :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    lblMvt.Caption = "Date du mouvement : " + Rs!DAT_MVT
     
    quand je mets le curseur sur Rs!DAT_MVT il a la date mais je crois qu'il faut changer le format, je sais comment le faire dans une requête mais je ne sais pas le faire dans l'affichage

###raw>template_hook.ano_emploi###