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
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut []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/viewtopic.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 habitué
    Avatar de elifqaoui
    Inscrit en
    juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 152
    Points : 136
    Points
    136
    Par défaut 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
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    je suis désolé elifqaoui, mais la solution que tu m'as donné ne fonctionne pas.

    merci quand même

  4. #4
    Expert confirmé
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2003
    Messages : 2 470
    Points : 4 645
    Points
    4 645
    Par défaut
    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 habitué
    Avatar de elifqaoui
    Inscrit en
    juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 152
    Points : 136
    Points
    136
    Par défaut
    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é
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2003
    Messages : 2 470
    Points : 4 645
    Points
    4 645
    Par défaut
    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
    Inscrit en
    juillet 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 39
    Points : 35
    Points
    35
    Par défaut
    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é
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2003
    Messages : 2 470
    Points : 4 645
    Points
    4 645
    Par défaut
    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
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    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
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    CLT_FAC se trouve que dans une table

  11. #11
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 152
    Points : 136
    Points
    136
    Par défaut
    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é
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2003
    Messages : 2 470
    Points : 4 645
    Points
    4 645
    Par défaut
    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
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2002
    Messages : 3 673
    Points : 8 522
    Points
    8 522
    Par défaut
    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
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    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
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2002
    Messages : 3 673
    Points : 8 522
    Points
    8 522
    Par défaut
    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
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    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
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    et mon nouveau message d'erreur est : type de données incompatibles dans l'expression du critère

  18. #18
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2002
    Messages : 3 673
    Points : 8 522
    Points
    8 522
    Par défaut
    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
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    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
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/09/2010, 11h28
  2. Réponses: 0
    Dernier message: 25/06/2008, 10h53
  3. comment faire une "base de donnée" en visual basic
    Par morpheusmg dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/11/2007, 20h42
  4. [VB]Importer une vue SQL Server via Visual Basic
    Par NoViceDel dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 24/05/2006, 20h57
  5. [SGBD] Y-a-t'il une solution a mon probleme visual basic-php-mysql
    Par enibris dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 28/02/2006, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo