cs_rocknroll2
Messages postés100Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention22 janvier 2010
-
21 janv. 2010 à 12:49
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 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
;)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_rocknroll2
Messages postés100Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention22 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
;)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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 ...