[ORACLE] Intérogation SQL via VBA/ADODB

Résolu
Ti-Gars Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
Ti-Gars Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voici mon problème:

Nous avons une BD Oracle sur notre réseau et j'y accède via Excel/VBA ADODB. Ma requête SQL recherche des données selon une certaine période de temps. Sur mon PC je formate les dates selon "d/m/yyyy" et cela fonctionne très bien.

Malheureusement, sur le site, il y a plusieurs version de Windows (2000, XP), d'Excel (2000, 2003) et en anglais et en français.

Les seuls points communs sont les paramètres régionaux (Anglais - États-Unis) et tous les formats de date.

Présentement, dépendamment du PC, j'utilise "d/m/yyyy" ou "yyyy/m/d".

Est-ce qu'il existe une façon d'utiliser un format de date général? Ou bien encore une manière d'identifier, par programmation, les version de Windows et d'Excel pour que je puisse utiliser le bon format?

Merci d'avance de votre aide...
A voir également:

3 réponses

pretender
 
Une autre solution serait de mettre des colonnes pour chaque nombres : année , jour et mois ainsi tu n'aurais pas à te soucier de la version ou de la langue des programmes
0
Ti-Gars Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Pretender...

Mais je ne suis pas sûr de comprendre...

Voici ma requête SQL :

"SELECT * FROM MaTable WHERE DateFacture >= ' " & Format(strDateDébut, "yyyy/mm/dd") & " ' AND DateFacture <= ' " & Format(strDateFin, "yyyy/mm/dd") & " ' "



Ce que tu proposes serait :

"SELECT * FROM MaTable WHERE Substr(DateFacture,7,2) >= 'année' AND Substr(DateFacture,4,2) >= 'mois' AND ...etc

????

Si cela est le cas, j'aurais un problème avec le mois et le jour car >= Mars va éliminer janvier et février si mon intérogation porte sur plus de 10 mois...

SVP m'expliquer ton idée...

J'espère beaucoup que cela va marcher...
0
Ti-Gars Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Pretender...

Mais je ne suis pas sûr de comprendre...

Voici ma requête SQL :

"SELECT * FROM MaTable WHERE DateFacture >= ' " & Format(strDateDébut, "yyyy/mm/dd") & " ' AND DateFacture <= ' " & Format(strDateFin, "yyyy/mm/dd") & " ' "



Ce que tu proposes serait :

"SELECT * FROM MaTable WHERE Substr(DateFacture,7,2) >= 'année' AND Substr(DateFacture,4,2) >= 'mois' AND ...etc

????

Si cela est le cas, j'aurais un problème avec le mois et le jour car >= Mars va éliminer janvier et février si mon intérogation porte sur plus de 10 mois...

SVP m'expliquer ton idée...

J'espère beaucoup que cela va marcher...
0
pretender
 
Ce que je proposais c'etait d'abandonner le "date" et de faire trois champs "int". En requete ca ce traduirait par

CREATE TABLE Facture ( .......,

.......,
jour int NOT NULL,
mois int NOT NULL,
annee int NOT NULL);

C'est sur que c'est plus pratique avec 'date' mais si tu as des problemes de compatibilité, c'est comme ca que je ferais en gerant apres les champs un à un.
0
Ti-Gars Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Pretender...

J'essai et je t'en reparle...
0
Ti-Gars Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Finalement, après avoir essayé le truc de Pretender, j'en suis venu à la conclusion qu'il serait plus facile de forcer le format de date de Oracle pour s'adapter à celui "forcer" de VBA. Ce qui donne :

"SELECT * FROM MaTable WHERE To_Char(DateFacture,'yyy/mm/dd') >= ' " & Format(strDateDébut, "yyyy/mm/dd") & " ' AND To_Char(DateFacture,'yyy/mm/dd') <= ' " & Format(strDateFin, "yyyy/mm/dd") & " ' "

Encore une fois merci Pretender...
0