XL 2016 Base de données ODBC filtré selon variable date contenue dans une cellule

alexitt

XLDnaute Nouveau
Bonjour,
j'utilise sur Excel une base de données lié à une source en ODBC.
Je souhaite via le code SQL des propriété de connexion (pas de VBA pour cette utilisation), filtrer selon une date stockée dans onglet "Feuil1" cellule "A1"
1. Je n'arrive pas à trouver le bon format date
2. Est-il possible de lié la cellule directement dans le code et non par la fonction "Paramètres..." des propriétés de connexion?

SQL:
SELECT Ma_Table.REFERENCE, Ma_Table.DATE
FROM Ma_Table
WHERE Ma_Table.DATE >= ?


Merci pour votre aide

PS : Dans le fichier, j'ai ajouté un filtre supplémentaire pour alléger le fichier
 

Pièces jointes

  • Essai_filtre_date.xlsm
    22.3 KB · Affichages: 14

alexitt

XLDnaute Nouveau
Bonjour,
Avec votre code j'obtient l'Erreur ORA-00911 "invalid character"

Un code qui fonctionne avec une date figée est :
WHERE Ma_Table.DATE >= {ts '2020-11-07 00:00:00'}

Simplement je coince dès que je souhaite que ce critère devienne une variable liée à une cellule Excel (et sans passé par VBA)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Pas certain mais {ts '2020-11-07 00:00:00'} ne convertirait-il pas la date en timestamp ?
Si c'est le cas essayez, en B1 de Feuil1 la formule suivante qui convertit la date de A1 en timestamp:
=(A1-DATE(1970;1;1))*86400
Dans les propriétés de la requête modifiez la source du paramètre pour Feuil1!B1

Sinon, puisque vous avez xl2016 vous pourriez sans doute utiliser Power Query (onglet 'Données').

Cordialement
 

alexitt

XLDnaute Nouveau
Merci pour vos retours.
Pour répondre à Hasco,
Oui c'est une conversion en timetamp. J'ai obtenu ce code en passant par Microsoft Query est j'ai essayer de l'adapter sans succès...
j'ai saisi la formule que vous m'avez proposé (j'avoue sans la comprendre) mais j'ai le message suivant : "ORA-01861 : literral does not match format string"

Pour répondre à fanch55,
Je pensai que ce code allait fonctionner, j'ai malheureusement le message suivant : "ORA-01847 : day of month must be between 1 and last day of month"
Pensant qu"il s'agit d'un mauvais format dans ma cellule, j'ai essayé les 2 formats suivant : "dd.mm.yyyy" et "yyyy-mm-dd HH:MM:SS"
 

Chris24

XLDnaute Impliqué
Bonjour,
j'utilise sur Excel une base de données lié à une source en ODBC.
Je souhaite via le code SQL des propriété de connexion (pas de VBA pour cette utilisation), filtrer selon une date stockée dans onglet "Feuil1" cellule "A1"
1. Je n'arrive pas à trouver le bon format date
2. Est-il possible de lié la cellule directement dans le code et non par la fonction "Paramètres..." des propriétés de connexion?

SQL:
SELECT Ma_Table.REFERENCE, Ma_Table.DATE
FROM Ma_Table
WHERE Ma_Table.DATE >= ?


Merci pour votre aide

PS : Dans le fichier, j'ai ajouté un filtre supplémentaire pour alléger le fichier
Bonsoir,

sur Oracle cette syntaxe doit fonctionner

MaDate variable qui récupère la date de la cellule A1 de la feuil1

Where Ma_Table.date >= '" & MaDate & "'


Cdt
 

alexitt

XLDnaute Nouveau
Bonsoir,

sur Oracle cette syntaxe doit fonctionner

MaDate variable qui récupère la date de la cellule A1 de la feuil1

Where Ma_Table.date >= '" & MaDate & "'


Cdt

Merci Chris24 pour votre réponse, je sais utiliser une variable via VBA mais je ne sais pas comment créer une variable dans le texte de la commande ci -dessous.
J'a essayé votre code en remplacement par "Madate" par "?" qui est un paramètre lié à la cellule contient la date. J'ai le message d'erreur suivant : "ORA-01858 a non-numeric character was found where a numeric was expected"

Connecion_ODBC.png


WHERE Ma_Table.DATE >= TO_DATE(?, 'YYYY-MM-DD') avec la cellule A1 de feuill1 en format Texte.

Fanch55,
J'ai saisi votre code mais malheureusement j'ai le code d'erreur "ORA-01861 : literal does not match format string"
Est-ce une mauvaise saisie de ma part? Vous pouvez voir le code dans l'image ci-dessus.
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 145
Membres
103 130
dernier inscrit
FRCRUNGR