IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

pb d'execution de requete


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 49
    Points
    49
    Par défaut pb d'execution de requete
    Bonjour,

    j'ai fait une requete qui fonctionne bien mais j'ai voulu l'utiliser dans une autre requete et là ca fonctionne plus. Ci-dessous mon code

    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
    16
    17
    18
    19
    20
     
     
    Dim rq As String
    Dim rq1 As String
     
    rq = "SELECT DISTINCT clients.[ID PCET], clients.[Fréquence transmission], ((Left([Date de transmission],8))) AS [date transmission] FROM clients INNER JOIN ftp ON clients.[ID PCET] = ftp.[ID PCET]"
    rq = rq & "Where Left([Date de transmission], 8) >" & var1
    rq = rq & "and Left([Date de transmission], 8) < " & var2
     
     
     
    rq1 = "TRANSFORM Count(rq.[Fréquence transmission]) AS [CompteDeFréquence transmission]"
    rq1 = rq1 & "SELECT rq.[ID PCET], rq.[Fréquence transmission] AS [Total de Fréquence transmission]"
    rq1 = rq1 & " From rq"
    rq1 = rq1 & "GROUP BY rq.[ID PCET], rq.[Fréquence transmission]"
    rq1 = rq1 & "ORDER BY rq.[Fréquence transmission]"
    rq1 = rq1 & "PIVOT rq.[date transmission]"
     
     
    reqcroix.Open rq1, cnx, 1, 1

    Merci d'avance

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Bonjour,

    utilises les outils de débogage de VB, mets un point d'arret (F9) sur ta ligne "rq = "SELECT DISTINCT clients.[ID PCET], clients.[Fréquence transmission], ((Left([Date de transmission],8))) AS [date transmission] FROM clients INNER JOIN ftp ON clients.[ID PCET] = ftp.[ID PCET]"
    et quand le programme s'arrête dessus, fais une progression pas à pas (F8) et regarde ce que vaut ta variable 'rq'.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    Je pense que l'erreur est dans la 2éme requete car si je mets ce code ca fonctionne bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Dim rq As String
     
     
    rq = "SELECT DISTINCT clients.[ID PCET], clients.[Fréquence transmission], ((Left([Date de transmission],8))) AS [date transmission] FROM clients INNER JOIN ftp ON clients.[ID PCET] = ftp.[ID PCET]"
    rq = rq & "Where Left([Date de transmission], 8) >" & var1
    rq = rq & "and Left([Date de transmission], 8) < " & var2
     
     
    reqcroix.Open rq, cnx, 1, 1

  4. #4
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    J'avoue que j'ignorais qu'on pouvait mettre un "Left" dans une requête mais effectivement, c'est autorisé. Par contre on a vraiment le droit d'écrire : rq.[Fréquence transmission] ?
    Même si c'est autorisé, je pense qu'il vaudrait mieux mettre quelquechose du style :
    rq1 = "TRANSFORM Count(" & rq.[Fréquence transmission] & ") ..
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    j'ai essayé la solution mais ca marche toujours pas

    il affiche : Ce pilote ODBC ne prend pas en charge les propriétés demandés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    reqcroix.Open rq1, cnx, 1, 1
    Est ce que je dois changé les paramètres d'ouverture du recordset???

  6. #6
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Tant qu'à faire, peux tu nous montrer le code de ta requête maintenant que tu l'as modifié. Je ne suis pas spécialiste du tout en SQL mais peut être que d'autres pourrront t'aider. Si tu ne montres pas le code, ce sera plus difficile.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    Voici le code il affiche toujours le même message d'erreur sur l'ouverture de recordset


    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
    16
    17
    18
    19
    20
    21
     
     
    Dim rq As String
    Dim ts As String
    Set reqcroix = New ADODB.Recordset
     
     
     
    rq = "SELECT DISTINCT clients.[ID PCET], clients.[Fréquence transmission], ((Left([Date de transmission],8))) AS [date transmission] FROM clients INNER JOIN ftp ON clients.[ID PCET] = ftp.[ID PCET]"
    rq = rq & "Where Left([Date de transmission], 8) >" & var1
    rq = rq & "and Left([Date de transmission], 8) < " & var2
     
     
    rq1 = "TRANSFORM Count(rq.[Fréquence transmission]) AS [CompteDeFréquence transmission]"
    rq1 = rq1 & "SELECT rq.[ID PCET], rq.[Fréquence transmission]"
    rq1 = rq1 & "From rq"
    rq1 = rq1 & "GROUP BY rq.[ID PCET], rq.[Fréquence transmission]"
    rq1 = rq1 & "ORDER BY rq.[Fréquence transmission]"
    rq1 = rq1 & "PIVOT rq.[date transmission];"
     
    reqcroix.Open ts, cnx, 1, 1

  8. #8
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Je ne vois aucune modification dans le code, en dehors de ce mélange entre ts et rq1. As tu essayé ce que je te suggérais hier ?
    Personnellement je ferais un essai avec une requête plus simple pour commencer, juste histoire de vérifier la syntaxe.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    oui j'ai déjà essayé avec votre méthode mais l'erreur est devenu sur le code car il comprend pas les '&'.

    vous penser quoi sur l'ouverture du recodset?

  10. #10
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Je ne pense rien, c'est définitivement pas mon truc
    Il y a certainement une erreur de syntaxe dans ta requête rq1 mais c'est hors de mes compétences.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    la requête fonctionne sur access alors je pense pas que l'erreur est là.
    en tout cas merci.

  12. #12
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    La requête fonctionne sur Access car Access reconnait le nom des requêtes précédemment crées. Ici 'rq' n'est rien d'autre qu'une variable de type String, ça m'étonnerait donc fortement qu'elle soit reconnue telle que ta requête rq1 est écrite, mais je peux bien sûr me tromper.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    alors la question comment utiliser deux requêtes sql sous vb??????

  14. #14
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    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
    16
    17
    18
    19
    20
     
    Dim rq As String
    Dim ts As String
    Set reqcroix = New ADODB.Recordset
     
     
     
    rq = "SELECT DISTINCT clients.[ID PCET], clients.[Fréquence transmission], ((Left([Date de transmission],8))) AS [date transmission] FROM clients INNER JOIN ftp ON clients.[ID PCET] = ftp.[ID PCET]"
    rq = rq & "Where Left([Date de transmission], 8) >" & var1
    rq = rq & "and Left([Date de transmission], 8) < " & var2
     
     
    rq1 = "TRANSFORM Count(rq.[Fréquence transmission]) AS [CompteDeFréquence transmission]"
    rq1 = rq1 & "SELECT rq.[ID PCET], rq.[Fréquence transmission]"
    rq1 = rq1 & "From rq"
    rq1 = rq1 & "GROUP BY rq.[ID PCET], rq.[Fréquence transmission]"
    rq1 = rq1 & "ORDER BY rq.[Fréquence transmission]"
    rq1 = rq1 & "PIVOT rq.[date transmission];"
     
    reqcroix.Open ts, cnx, 1, 1
    Dans ton code ,je ne vois aucune valeur pour ts
    donc tu ouvres un recordset avec comme requête une valeur nulle puisque le string ts="" ???
    Où alors le code que tu nous donnes est incomplet.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    je suis désole c'était une faute de frappe ej veux afficher la dernière 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
    16
    17
    18
    19
    20
    21
     
     
    Dim rq As String
    Dim ts As String
    Set reqcroix = New ADODB.Recordset
     
     
     
    rq = "SELECT DISTINCT clients.[ID PCET], clients.[Fréquence transmission], ((Left([Date de transmission],8))) AS [date transmission] FROM clients INNER JOIN ftp ON clients.[ID PCET] = ftp.[ID PCET]"
    rq = rq & "Where Left([Date de transmission], 8) >" & var1
    rq = rq & "and Left([Date de transmission], 8) < " & var2
     
     
    rq1 = "TRANSFORM Count(rq.[Fréquence transmission]) AS [CompteDeFréquence transmission]"
    rq1 = rq1 & "SELECT rq.[ID PCET], rq.[Fréquence transmission]"
    rq1 = rq1 & "From rq"
    rq1 = rq1 & "GROUP BY rq.[ID PCET], rq.[Fréquence transmission]"
    rq1 = rq1 & "ORDER BY rq.[Fréquence transmission]"
    rq1 = rq1 & "PIVOT rq.[date transmission];"
     
    reqcroix.Open rq1 , cnx, 1, 1

  16. #16
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Ensuite et de plus ton code n'est pas logique
    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
    16
    17
    18
    19
    20
     
    Dim rq As String
    Dim ts As String
    Set reqcroix = New ADODB.Recordset
     
     
     
    rq = "SELECT DISTINCT clients.[ID PCET], clients.[Fréquence transmission], ((Left([Date de transmission],8))) AS [date transmission] FROM clients INNER JOIN ftp ON clients.[ID PCET] = ftp.[ID PCET]"
    rq = rq & "Where Left([Date de transmission], 8) >" & var1
    rq = rq & "and Left([Date de transmission], 8) < " & var2
     
     
    rq1 = "TRANSFORM Count(rq.[Fréquence transmission]) AS [CompteDeFréquence transmission]"
    rq1 = rq1 & "SELECT rq.[ID PCET], rq.[Fréquence transmission]"
    rq1 = rq1 & "From rq"
    rq1 = rq1 & "GROUP BY rq.[ID PCET], rq.[Fréquence transmission]"
    rq1 = rq1 & "ORDER BY rq.[Fréquence transmission]"
    rq1 = rq1 & "PIVOT rq.[date transmission];"
     
    reqcroix.Open ts, cnx, 1, 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    rq1 = rq1 & "SELECT rq.[ID PCET], rq.[Fréquence transmission]"
    rq1 = rq1 & "From rq"
    rq est une variable chaîne de caractères: dans " SELEc rq ...etc" rq sera reconnu comme étant les lettres rq et non comme la variable chaîne de caractères d'où déjà mot inconnu pour SQL

  17. #17
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rq1 = "TRANSFORM Count(rq.[Fréquence transmission]) AS [CompteDeFréquence transmission]"
    donc tu dois déjà transformer ta requête dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rq1 = "TRANSFORM Count(" & rq  & "client.[Fréquence transmission]) ... etc
    et de même avec les autres rq et tu vrras déjà plus clair

    A+

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    vous avez raison car rq est déclaré string mais moi je veux l'utiliser comme requête et là c'est le problème

  19. #19
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    rq1 = "TRANSFORM Count(" & rq & "clients.[Fréquence transmission]) AS [CompteDeFréquence transmission]"
    rq1 = rq1 & "SELECT " & rq & "clients.[ID PCET]," &  rq & "clients.[Fréquence transmission]"
    rq1 = rq1 & "From " & rq 
    rq1 = rq1 & "GROUP BY " & rq  & "clients.[ID PCET]," &  rq & ".[Fréquence transmission]"
    rq1 = rq1 & "ORDER BY " & rq & ".[Fréquence transmission]"
    rq1 = rq1 & "PIVOT " & rq & "clients.[date transmission];"
    transformer ta requête comme ceci et ...à vérifier

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Points : 49
    Points
    49
    Par défaut
    merci iclic mais j'ai toujours le même problème
    j'ai même change la deuxième requête par une simple et ca marche pas voici ce que j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rq1 = "SELECT distinct" & rq & "clients.[ID PCET] From" & rq

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA-E] Temps d'execution de requetes SQL tres long
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2006, 10h25
  2. Executer un requete en VBA
    Par el_quincho dans le forum Access
    Réponses: 1
    Dernier message: 13/03/2006, 16h09
  3. Pb d'execution de requete sql
    Par Crazynoss dans le forum ASP
    Réponses: 2
    Dernier message: 11/05/2005, 10h19
  4. [VB.NET] Executer une requete à partir d'un DataSet...?
    Par anthony70 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 12/07/2004, 14h17
  5. Pb d'execution de requete avec un script php
    Par ythierrin dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2003, 14h34

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