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

WinDev Discussion :

Requète SQL Sum [WD14]


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut Requète SQL Sum
    Bonjour à tous.

    Pourquoi lorsque je fais ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto est un chaîne = ("select sum(CAreg) from TabReg")
    CA = SQLExec(toto, "tot") + "€"
    La valeur retourné est 1 au lieu de mon CA.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Parce que SqlExec te renvoie un booléen qui te permet de savoir si la requête s'est bien exécutée ou pas. Je pense qu'il te faut relire l'aide en ligne de SqlExec().

    Tatayo.

  3. #3
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    La valeur retourné est 1 au lieu de mon CA
    On est rassuré, la fonction SQLExec fonctionne donc correctement
    Il faudrait faire un minimum d'effort et au moins regarder l'aide de la fonction avant de poster sur le forum : il y a un exemple de code sur la 1ere page d'aide de cette fonction

  4. #4
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Tout à fait exact, donc je me suis dit avec un SQLLitCol, comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    toto est un chaîne = ("select sum(CAreg) from TabReg")
    sCAP est une chaîne = SQLExec(toto, "tot")
     
    CA = SQLLitCol("tot", 1) + "€"
    Mais non.
    Je ne vois pas trop car pour moi le SQLLitCol allait renvoyer la 1ere valeur de ma col 1 de ma requète.

  5. #5
    Membre du Club Avatar de samlerouge
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 58
    Points : 66
    Points
    66
    Par défaut
    Hello,

    SqlExce ne récupère pas de résultats de la mémoire. Pour que tu obtiennes ton résultat, il faut appeler SQLPremier, SQLTable ou SQLFetch.

    Dans ton cas avec SqlPremier (par exemple):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    toto est un chaîne = ("select sum(CAreg) from TabReg")
    sCAP est une chaîne = SQLExec(toto, "tot")
    SqlPremier("tot")
    CA = SQLLitCol("tot", 1) + "€"
    Bon dév

    Samuel
    Windev-Webdev - Oracle- PLSQL
    est l'ami de tout le monde

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Désolé mais je vais me répéter : regarde l'aide des fonctions que tu utilises

    Tu lis l'enregistrement en cours, il faudrait peut être se positionner sur l'enregistrement à lire : SQLPRemier, SQLAvance ...

  7. #7
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Merci de cette réponse, mais j'ai déjà tester SQLPremier, et cela ne marche pas.
    Je me retrouve encore une fois avec rien.

    Quand je mets des points d'arrets, cette ligne:

    CA = SQLLitCol("tot", 1) + "€"

    CA me rapporte CA

    Et quand je ferme ma requète,
    CA me rapporte "€".

    Je sais que je ne lis pas toujours avec intention l'aide, mais la j'ai vraiment chercher et j'ai essayer SQLPremier, un tant que avec SQLAvance, mais rien ne s'affiche, je ne récupère pas ma valeur.

  8. #8
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Tu peux nous donner ton code complet, avec la déclaration des variables utilisées

  9. #9
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Ah oui, très bonne question, j'ai oublier de dire que CA est un libellé, c'est peut être ça dont tu as besoin.

    Mais j'ai essayer de mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    toto est un chaîne = ("select sum(CAreg) from TabReg")
    sCAP est une chaîne = SQLExec(toto, "tot")
    SQLPremier("tot")
    CASSE est une chaîne =  SQLLitCol("tot", 1)
    CA = CASSE + "€"
    Pensant que peut être il fallait l'enregistrer dans une variable mais ce n'est pas mieux.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut


    Voici ce que l'on peut trouver quand on regarde l'aide en ligne de Windev pour SqlExec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Exécuter la requête et récupérer le résultat ligne à ligne
    i est un entier = 0
    SQLExec("SELECT NOM, PRENOM, POSTE, PHOTO FROM CLIENT", "REQ1")
    TANTQUE SQLAvance("REQ1") = 0  // Il y a encore une ligne à lire
       i++
       // Récupérer les données
       NOM[i] = SQLLitCol("REQ1", 1)
       PRENOM[i] = SQLLitCol("REQ1", 2)
       POSTE[i] = SQLLitCol("REQ1", 3)
       {"IMAGE"+i} = SQLLitMémo("REQ1", 4)
    FIN
    SQLFerme("REQ1")
    Je rejoins hpascal, regarde l'aide en ligne et tu auras ce que tu cherches.

    Tatayo

  11. #11
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Merci tatayo, mais comme dit un peu plus haut, j'ai regarder l'aide en ligne quand même et j'ai tester ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    i est un entier = 0
    toto est un chaîne = ("select sum(CAreg) from TabReg")
    sCAP est une chaîne = SQLExec(toto, "tot")
    TANTQUE SQLAvance("tot") = 0  // Il y a encore une ligne à lire
    	i++
    	// Récupérer les données
    	CA[i] = SQLLitCol("tot", 1)
    	FIN
     
    	SQLFerme("tot")
    Mais cela ne marche pas.

    Maintenant je me suis souvenue d'une erreur similaire que j'avais eu une fois avec cette histoire crochet, il avait fallu que je les doubles.

    Et donc cette solution marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    i est un entier = 0
    toto est un chaîne = ("select sum(CAreg) from TabReg")
    sCAP est une chaîne = SQLExec(toto, "tot")
    TANTQUE SQLAvance("tot") = 0  // Il y a encore une ligne à lire
    	i++
    	// Récupérer les données
    	CA[[i]] = SQLLitCol("tot", 1) + "€"
    	FIN
     
    	SQLFerme("tot")

    Voila problème résolu, merci à tous.

  12. #12
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    ok
    Juste quelques remarques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sCAP est une chaîne = SQLExec(toto, "tot")
    SQLExec retoune VRAI ou FAUX, pourquoi mettre ça dans une chaîne ?

    Le mieux c'est de tester si l'exécution c'est bien passée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI SQLExec(...   ALORS
       // ton code si ok
    SINON
       // Afficher message d'erreur
    FIN
    Ensuite pour tester d'où vient le problème, procède par étapes :
    - est-ce ma requêtre fonctionne ? (SQLExec a renvoyé VRAI ?)
    - est-ce que je peux lire ma colonne (trace ou info de SQLLitCol("tot", 1))
    Tu aurais vu de suite que le problème venait de l'affectation à ton libellé

    Essaye de nommer aussi tes champs et variables avec des préfixes
    Par exemple : Sais_ pour un champ de saisie, Lib_ pour un libellé
    On aurait lu Lib_CA on aurait su de suite que c'est un libellé

    Bon courage pour la suite

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

Discussions similaires

  1. [Problème SQL] Sum, Count + requête imbriquée
    Par Lolie11 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/01/2009, 18h08
  2. Problème de SUM sur une requête SQL
    Par Lapicure dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/06/2007, 11h51
  3. [SQL] Requête fonction SUM
    Par ribrok dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/01/2007, 16h45
  4. Requête SQL avec UNION, sum et GROUP BY
    Par Guitariff dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/12/2006, 13h48
  5. Pb sur SUM dans requête SQL exécutée sous VB
    Par MAKSIM dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/11/2006, 17h07

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