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 sur SUM dans requête SQL exécutée sous VB


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Pb sur SUM dans requête SQL exécutée sous VB
    Bonjour,

    1ère fois que je pose une question. Habituellement, je chercher et trouve, mais là, je coince !

    J'exécute un requête SQL qui contient SUM et GROUP BY.
    Lorsque je l'exécute directement avec l'outil TOAD, sur ma base Oracle, celle s'exécute correctement.
    Lorsque je passe par mon programme VB, à l'aide d'un recordset, je ne récupère pas la colonne SUM

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select sum(MontantSP) as MontantSP, Code 
      From TableFAP 
     Where Numero >= 237970 
     Group by Code
    Sous Toad, je récupère n lignes et 2 colonnes
    Sous vb, mon recordset ne contient qu'1 colonne = Code
    recordset(0) = Code

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    As tu essayé de lire Recordset(1) ?

  3. #3
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Ta requête est tout à fait correcte, ton erreur doit venir de ton code VB : peux-tu nous donner le code utilisé STP ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Merci, pc75
    mais rs(1) correspond alors à ma 3ème colonne demandée. En fait, quand j'interroge "rs.field.count", j'ai n-1 colonnes, alors que dans ma requête, j'en sélectionne bien n.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Pour Xo
    Ma requête fonctionne aussi quand je suis connectée à une base Access.
    Pour ce qui est du code, le programme fait appel à un utilitaire qui permet d'exécuter la requête.

    Set rsq = gFr_ADO_Openrecordset(strCrit, dbOpenDynaset)

    Dans strCrit, j'ai le texte de ma requête :
    "SELECT sum(MontantSP_16) AS MontantSP, CodePrestation_3 From FactureTable_FAP9 Where NumFacture_2 >= 237970 GROUP BY CodePrestation_3"

    dbOpenDynaset vaut 2

    rsq est un ADODB.recordset

    Voici le code de la fonction utilisée :
    "
    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
    22
    Public Function gFr_ADO_Openrecordset(ByVal sSQL As String, Optional ByVal rsType = -1, Optional ByVal lOptions = -1, Optional ByVal rsLock = dbOptimistic) As Object
        'Rq: pas de gestion d'erreur:géré par l'appelant pour se comporter comme currentdb.openrecordset
        'qui provoque une erreur si sql incorrect
    If cDebug = "OUI" Then
       Debug.Print "**ADO open:" & sSQL
    End If
       If rsType = -1 Then   ' Mettre valeur par défaut pour recordset avec Maj selon moteur
          rsType = dbOpenDynaset
       End If
       If lOptions = -1 Then   ' Mettre valeur par défaut pour Option selon moteur
          lOptions = dbSeeChanges
       End If
       If cnn1 Is Nothing Then
          Open_Connection
       End If
       Set rst1 = New ADODB.Recordset
       rst1.CursorType = adOpenKeyset 'adOpenDynamic 'adOpenKeyset
       rst1.LockType = rsLock 'adLockOptimistic 'rsLock
       rst1.Open sSQL, cnn1
       Set gFr_ADO_Openrecordset = rst1
       Exit Function
    End Function
    Ma chaîne de connexion :

    cnn1 = <Provider=MSDASQL.1;Data Source=ORA_LIB;Extended Properties="DSN=ORA_LIB;UID=libfac2000;PWD=faczup;DBQ=THIONDEV;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;">

    Voilà, s'il manque quelque chose ... merci

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Solution
    En poursuivant mes investigations, j'ai réussi à ne plus avoir le problème en laissant le type de curseur par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst1.CursorType = adOpenForwardOnly
    Je ne vois pas le rapport entre les champs et le type de curseur, mais ça fonctionne.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2013, 16h39
  2. Problème de lenteur requête SQL exécutée dans une page ASP
    Par Philippe Robert dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 20/01/2009, 17h38
  3. Utilisation de variable Date dans requète SQL sous Access
    Par noakiss dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/03/2008, 09h37
  4. Réponses: 4
    Dernier message: 14/11/2006, 19h03
  5. ASP et valeur NULL dans requêtes SQL
    Par chuck_m dans le forum ASP
    Réponses: 7
    Dernier message: 13/08/2004, 11h15

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