Pb requetes sql access (Vba)

cs_filiplarlibe Messages postés 21 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 18 septembre 2010 - 29 janv. 2007 à 14:56
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 - 1 févr. 2007 à 12:33
Bonjour a tous,

J'ai un petit problème avec deux requetes sql :
Je voudrais exécuter une première requete sql (connection à une base sur un serveur)
et ensuite exécuter une deuxième requête pour créer une table avec les résultats de la première requete.
Sous access ca donne:

1ère requete : SELECT * FROM nom_serveur.TAEDG50 ORDER BY D50_C_FBC, D50_D_DEB_VAL_ID DESC;

2ème requete : SELECT requete1.* INTO TABLE_TEMP
FROM requete1;

Ca marche bien comme ca Mais le problème c'est que je voudrais l'exécuter en code (car sinon je dois modifier le mot de passe tous les mois pour l'accés au serveur) mais je ne sais pas comment faire. J'utilise ce code pour exécuter une requete en vb :

recordset.Open "SELECT DISTINCT(D50_C_FBC) FROM nom_serveurTAEDG87", nom_connection, adOpenKeyset, adLockPessimistic

Je ne sais pas comment faire pour exécuter la deuxième requête en utilisant le même code.

Si quelqu'un peut m'aider et aurait une solution a mon problème.
Merci d'avance.

7 réponses

cs_bouf Messages postés 114 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 20 mars 2008
30 janv. 2007 à 10:27
Cliff le bouffeur[:p]

Salut,
il faut que tu reinjecte cette 1° requete dans un nouveau recordset.
exemple : ta 1° c'est :
set RsPremiereRequete=recordset.Open "SELECT DISTINCT(D50_C_FBC) FROM nom_serveurTAEDG87", nom_connection, adOpenKeyset, adLockPessimistic

set RsDeuxiemeRequete=RsPremiereRequete.OpenRecordset
ensuite tu en fait ce que tu veux.

a+
0
cs_filiplarlibe Messages postés 21 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 18 septembre 2010
30 janv. 2007 à 11:44
Salut,

le probleme c'est que je ne sais pas comment faire pour reinjecter le premier recordset dans le deuxième car il n ' y a aucune propriété openrecordset telle que je définie le recordset (ADODB) et donc lorsque je fais :

 set RsPremiereRequete=recordset.Open "SELECT DISTINCT(D50_C_FBC) FROM nom_serveurTAEDG87", nom_connection, adOpenKeyset, adLockPessimistic

J'ai une erreur : Fonction ou variable attendue.

Je ne sais vraiment pas comment faire.
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
30 janv. 2007 à 12:16
Pas sûr d'avoir compris : les enregistrements trouvés via ta première requête doivent être "exportés" dans une seconde table ?   Si c'est ça, pourquoi pas simplement

db.Execute "SELECT * INTO TABLE_TEMP FROM nom_serveur.TAEDG50 ORDER BY D50_C_FBC, D50_D_DEB_VAL_ID DESC"

Evidemment tu auras pris le soin d'instancier la variable db (si tu codes en VBA Access, fais un CurrentDB.Execute)

Christophe
0
cs_filiplarlibe Messages postés 21 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 18 septembre 2010
30 janv. 2007 à 13:39
J'ai déjà essayé ceci mais la requête ne marche pas :

SELECT * INTO TABLE_TEMP FROM nom_serveur.TAEDG50 ORDER BY D50_C_FBC, D50_D_DEB_VAL_ID DESC"

J'ai une erreur ODBC.
Je pense qu'en fait il doit essayer de créer la table temporaire sur le serveur en tout cas j'ai tout essayé et rien ne marche :

j'ai essayé comme ca mais ca ne marche pas non plus :

SELECT * INTO base_locale.TABLE_TEMP FROM nom_serveur.TAEDG50 ORDER BY D50_C_FBC, D50_D_DEB_VAL_ID DESC"

Si quelqu'un pense avoir la solution je suis preneur.

merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
31 janv. 2007 à 07:08
Quelle erreur ODBC ?   Es-tu p.e. sûr que tu as les droits en écriture sur cette DB ?

Qu'arrive-t-il si tu copies la table source dans ta DB locale et que tu exécutes ton SQL ?

Christophe
0
cs_filiplarlibe Messages postés 21 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 18 septembre 2010
31 janv. 2007 à 08:49
Je sais pas si tu as bien saisi mon probleme, je vais essayer de te réexpliquer plus clairement.
J'ai une base sur un serveur et une base en local surlaquelle je travaille et je fais toutes mes requêtes. Ce que j'essaye de faire c'est d'exécuter une requête sur une table de la base du serveur à partir de la base locale et de la récupérer son résultat sous forme de table sur ma base locale.
Et donc j'essaye de faire ca mais ca ne marche pas :

SELECT * INTO base_locale.TABLE_TEMP FROM nom_serveur.TAEDG50 ORDER BY D50_C_FBC, D50_D_DEB_VAL_ID DESC

L'erreur ODBC que j'ai est :
"ODBC l'appel a échoué"

Mais quand je retire le INTO base_locale.TABLE_TEMP de la requête, elle marche.
Je ne comprends pas.
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
1 févr. 2007 à 12:33
Depuis plusieurs années et chaque jour, je travaille sur des bases de données MS Access et je n'ai jamais été confronté à ton problème.    Moi aussi j'ai une DB locale et une centrale et pourtant, tout fonctionne.

Maintenant, je ne comprends pas pourquoi tu mentionnes base_locale dans ta syntaxe  INTO base_locale.TABLE_TEMP


Comme je le mentionnais plus haut; ma manière de travailler (et elle est éprouvée) est de faire ceci :

db.Execute "SELECT * INTO TABLE_TEMP FROM TAEDG50 ORDER BY D50_C_FBC, D50_D_DEB_VAL_ID DESC"

et, dans ma DB, j'ai évidemment attaché la table TAEDG50 dans ma DB locale.

Maintenant, il semble que cette manière de fonctionner ne puisse pas t'être utile.   J'en suis désolé.

Bien à toi.

Christophe
0
Rejoignez-nous