Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

inserer des champs d'un formulaire dans une requete SQL - ODBC

1 réponse
Avatar
sirgio
Bonjour, je desire importer ponctuellement (une fois pas mois) des
données d'une base oracle vers Access, la base oracle n'etant pas
toujours accessible.
En ODBC avec DSN ...
Pour cela je dispose de la requete "importation de données" suivante:

select T1."NUM_CLIENT_LIVR" "CLIENT",
T1."CODE_CIAL" "ARTICLE",
TO_NUMBER(TO_CHAR(T1."DATE_CREATION" ,'YYYY')) "AN",
TO_NUMBER(TO_CHAR(T1."DATE_CREATION" ,'MM')) "MOIS",
T1."QTE_FACTUREE" "QTE",
100*T1."MONTANT_HT_SITE" "Prixnet Euro",
100*T1."COUT_STD" "CoutRevient Euro",
T1."VALEUR1" "FAMCOM",
T1."AGENCE_CIALE" "AgentCommercial",
T1."NUMERO_CHRONO" "numFacture",
T2."TYPE_CLI_AG_FOUR" "Categorie"

from "FACT_AVOIR_CLI" T1, "CLIENTS" T2

where T1."NUM_CLIENT_LIVR"=T2."NUM_CLIENT" and
T1."DATE_CREATION" between to_date('2002-09-01
00:00:00', 'YYYY-MM-DD HH24:MI:SS') and to_date('2002-09-30 00:00:00',
'YYYY-MM-DD HH24:MI:SS') and
T1."CODE_CIAL"<>'PORT'

order by 10 asc, 1 asc, 2 asc


quand je clique sur cette requete, elle s'execute bien et j'obtiens
toutes les données que je veux!

Ce que je voudrais maintenant c'est la lancer a partir d'un formulaire
en passant en parametre les dates.

Mon problème:
cette requete ne s'ouvre qu'en mode SQL ou feuilles de données mais
pas en mode création, et surtout je ne peux pas y mettre des trucs du
genre "forms!nom_formulaire!nom_champs ... parceque c'est pas du SQl
!!

étant un super debutant, la solution est peut etre simple, mais ...
pas pour moi!
merci pour votre aide

1 réponse

Avatar
Benoit Compoint [MS]
Bonsoir,

Vous pouvez exécuter des requêtes SELECT INTO pour importer des données
d'une base Oracle dans une base Access.

Les requêtes de type SELECT INTO diffèrent de votre requête puisque ce ne
sont pas des requêtes "SQL Direct".
Les fonctions définies au niveau d'Oracle ne sont donc pas utilisables dans
ces requêtes SELECT INTO.

Mais vous pouvez utiliser des fonctions VBA à la place des fonctions
"Oracle".

En reprenant votre exemple, vous pouvez essayer de remplacer :
TO_CHAR(T1."DATE_CREATION" ,'YYYY')
par :
Format(T1.DATE_CREATION ,'YYYY')
ou par :
Year(T1.DATE_CREATION)

Exemple de requête SELECT INTO créant une table dans la base MDB à partir de
deux tables stockées dans une base SQL Server :

SELECT orders.OrderID INTO MesCommandes
FROM [ODBC;DRIVER=SQL
Server;SERVER=(local);UID=sa;PWD=sesame;DATABASE=NorthwindCS].orders,
[ODBC;DRIVER=SQL
Server;SERVER=(local);UID=sa;PWD=sesame;DATABASE=NorthwindCS].employees
WHERE (((orders.EmployeeID)=employees.employeeID));

Benoit Compoint


"Serge" wrote in message
news:
Bonjour, je desire importer ponctuellement (une fois pas mois) des
données d'une base oracle vers Access, la base oracle n'etant pas
toujours accessible.
En ODBC avec DSN ...
Pour cela je dispose de la requete "importation de données" suivante:

select T1."NUM_CLIENT_LIVR" "CLIENT",
T1."CODE_CIAL" "ARTICLE",
TO_NUMBER(TO_CHAR(T1."DATE_CREATION" ,'YYYY')) "AN",
TO_NUMBER(TO_CHAR(T1."DATE_CREATION" ,'MM')) "MOIS",
T1."QTE_FACTUREE" "QTE",
100*T1."MONTANT_HT_SITE" "Prixnet Euro",
100*T1."COUT_STD" "CoutRevient Euro",
T1."VALEUR1" "FAMCOM",
T1."AGENCE_CIALE" "AgentCommercial",
T1."NUMERO_CHRONO" "numFacture",
T2."TYPE_CLI_AG_FOUR" "Categorie"

from "FACT_AVOIR_CLI" T1, "CLIENTS" T2

where T1."NUM_CLIENT_LIVR"=T2."NUM_CLIENT" and
T1."DATE_CREATION" between to_date('2002-09-01
00:00:00', 'YYYY-MM-DD HH24:MI:SS') and to_date('2002-09-30 00:00:00',
'YYYY-MM-DD HH24:MI:SS') and
T1."CODE_CIAL"<>'PORT'

order by 10 asc, 1 asc, 2 asc


quand je clique sur cette requete, elle s'execute bien et j'obtiens
toutes les données que je veux!

Ce que je voudrais maintenant c'est la lancer a partir d'un formulaire
en passant en parametre les dates.

Mon problème:
cette requete ne s'ouvre qu'en mode SQL ou feuilles de données mais
pas en mode création, et surtout je ne peux pas y mettre des trucs du
genre "forms!nom_formulaire!nom_champs ... parceque c'est pas du SQl
!!

étant un super debutant, la solution est peut etre simple, mais ...
pas pour moi!
merci pour votre aide