SQL et VBA Excel

Fermé
francois0710 - 24 juil. 2008 à 10:13
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 24 juil. 2008 à 13:53
Bonjour,

j'ai un petit problème avec du code SQL sous VBA.
Mon programme plante à l'endroit suivant:
"SELECT Sum(VALEUR_BOURSIERE) AS 'Enc_VR', Sum(VALEUR_ACTUELLE_LIGNE) AS 'Enc_VNC'" & Chr(13) & "" & Chr(10) & "FROM DIRFIREPORT_DEV_01.USER_DFR.INVAMO_DF INVAMO_DF" & Chr(13) & "" & Chr(10) & "WHERE (INVAMO_DF.DATE_VALORISATION={ts '2008-06-30 00:00:00'}) AND ( " & CondPort & " )")

si CondPort ne vaut qu'une seule valeur, ça fonctionne nikel:
CondPort = "INVAMO_DF.CODE_PORTEFEUILLE='9120'"

mais si CondPort prend plusieurs valeurs, cela plante pour "incompatibilité de titre"

CondPort = "INVAMO_DF.CODE_PORTEFEUILLE='9120) OR (INVAMO_DF.CODE_PORTEFEUILLE='9140'"

Au début, mon programme ne fonctionnait pas mais après avoir encadré Condport par ' " & ', cela fonctionne. Peut-être que mon erreur est de ce type?
merci d'avance!
A voir également:

3 réponses

Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
24 juil. 2008 à 11:19
Bonjour,

Lorsque tu utilises l'instruction SUM, tu dois rajouter l'instruction GROUP BY, ton code devrait être le suivant
"SELECT Sum(VALEUR_BOURSIERE) AS 'Enc_VR', Sum(VALEUR_ACTUELLE_LIGNE) AS 'Enc_VNC' , 
INVAMO_DF.CODE_PORTEFEUILLE" & Chr(13) & "" & Chr(10) & "FROM DIRFIREPORT_DEV_01.USER_DFR.INVAMO_DF INVAMO_DF" & Chr(13) & "" & Chr(10) & "WHERE (INVAMO_DF.DATE_VALORISATION={ts '2008-06-30 00:00:00'}) AND ( " & CondPort & " )")
GROUP BY INVAMO_DF.CODE_PORTEFEUILLE


A plus
0
francois0710
24 juil. 2008 à 13:44
Merci de ta réponse

Le bug ne semble pas venir du "group by" car le code fonctionne bien lorsque
CondPort = "INVAMO_DF.CODE_PORTEFEUILLE='9120'"

C'est uniquement lorsque CondPort prend plusieurs valaurs que cela coince.
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
24 juil. 2008 à 13:53
Bonjour,

C'est peut-être le contenu de la variable CondPort qui n'est pas bon
CondPort = "INVAMO_DF.CODE_PORTEFEUILLE='9120) OR (INVAMO_DF.CODE_PORTEFEUILLE='9140'" 

Il faut peut-être supprimer les )
CondPort = "INVAMO_DF.CODE_PORTEFEUILLE='9120' OR INVAMO_DF.CODE_PORTEFEUILLE='9140'" 

A plus
0