Entrer une variable dans requete sql vers Oracle

Signaler
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
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

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
remplace '01/01/2009' par #2009-01-01#

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
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)
Messages postés
100
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
22 janvier 2010

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
;)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
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