Entrer une variable dans requete sql vers Oracle

cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010 - 21 janv. 2010 à 12:49
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 22 janv. 2010 à 09:39
Bonjour à tous,
J'ai une requête dans Microsoft Query qui attaque une base Oracle:

'select T1.art article, T3.bo_cancel_item cancelitem, T1.qte1 quantite_maintenant, nvl((T1.qte1-T2.qte2), 0) quantite_date, T4.art cdpaternlink, T4.PaternNull from (select cd_item art, sum(qt_in_warehouse) qte1 from stock_batch where cd_warehouse like '%GENE%' group by cd_item) T1,(select cd_item art, sum(qt_stck_move) qte2 from STOCK_MOUVEMT where dttm_stock_mvt between '01/01/2009' and sysdate and cd_warehouse like '%GENE%' group by cd_item) T2, (select cd_item art, bo_cancel_item from item) T3,(select cd_pattern PaternNull,cd_pattern_link art from compo) T4 where T1.art=T3.art(+) AND T1.art=T2.art(+) AND T1.art=T4.art(+) AND T3.bo_cancel_item = 1
'
La requète fonctionne bien mais mon problème est que j'aimerai passer en variable la date qui est ici écrit en "dur" (01/01/2009)..... Or, je dois pouvoir modifier cellec-ci très aisément puisque cela est destiné à des personnes incapables de rentrer dans les requètes pour les modifier en direct.
Quelqu'un a t'il une solution ? Solution qui peut éventuellement passer par une macro VBA, mais là, je ne suis pas trop calé pour faire une connexion VB vers Oracle. Actuellement je passe par ODBC.
Ou peut-être ne suis-je pas dans le bon Forum ?

Merci d'avance.



Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 janv. 2010 à 13:39
remplace '01/01/2009' par #2009-01-01#

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 janv. 2010 à 13:42
Salut
"passer par une macro VBA" : Donc tu n'es pas sous VB.NET ? (catégorie)
C'est important car les réponses diffèrent dans leur suyntaxe

En VBA, donc, :
maRequete = "select T1.art article, T3.bo_cancel_item cancelitem, ..." & _
            "tout ton merdier pas mis en forme ..." & _
            " where dttm_stock_mvt between #" & maTextBoxDate.Text & "# And sysdate " & _
            "la suite ..." 

Bien sûr, il faut que ton champ dttm_stock_mvt soit déclaré comme un champ de type Date dans ta table.
De plus, il faudra surement convertir ta date au format français en une date au format US (Mois/Jour/Année) --> Voir fonction Format

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_rocknroll2 Messages postés 100 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 22 janvier 2010
22 janv. 2010 à 09:32
Bonjour,
Merci pour vos réponses.
> Renfield: Pour le format date, pas de problème, je sais que le format oracle est aaaa-mm-jj. Ma question portait plus sur le fait de passer cette date en variable et non pas en dur. Merci qd même.

> Jack: Merci deaucoup, je vais tenter ta suggestion, mais il y a longtemps (...) j'avais tenté une connexion VBA vers mon serveur Oracle et là, j'avais réellement coincé ! J'avais, à l'époque, tenté pas mal de choses trouvées sur les forums, mais le résultat n'était pas OK !

Par ma question, je m'étais plus orienté vers un passage de date, donc une variable entrée dans une cellule Excel et passée directement à Microsoft Query, pas à une macro VBA...

Désolé pour ma mise en forme exécrable de ma requète.... C'était juste un copier/coller du SQL de Microsoft Query qui n'est pas top à ce niveau pour les requètes "compliquées" de ce type.
A vous lire
Bonne journée


Ouais, je serais un Pro du VB6 et du PHP dans 10/15 ans
;)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 janv. 2010 à 09:39
en variable, ok, format ok

mais gaffe aux séparateurs... une date se borne avec des # pas des ' (texte)

une requete étant une bête chaîne de caractère, une simple concaténation te permettra comme te l'indique Jack d'y insérer le contenu (formatté) de tes variables.

j'ignore pas mal de choses concernant Microsoft Query...

que se passe-t'il si tu ajoute des paramètres à ta requête ?
Ms Query te demande-t'il leur valeur ?

testes en remplacant :

between '01/01/2009' and

par

between DateMin and

par exemple.
n'ayant pas de champ nommé DateMin, Ms Query ...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Rejoignez-nous