Pb requetes sql Access (vba)

filiplarlibe

Nouveau membre
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.
 

zeb

Modérateur
[fixed]SELECT *
INTO TABLE_TEMP
FROM nom_serveur.TAEDG50
ORDER BY D50_C_FBC, D50_D_DEB_VAL_ID DESC;[/fixed]

(Sans garantie sous MSACCESS)
 

filiplarlibe

Nouveau membre
Ca ne marche pas j'ai déjà essayé et j'ai cette erreur :

ODBC : l'appel a échoué.

Je pense qu'en fait quand tu fais comme ca il essaye de créer la table sur le serveur directement et non en local sur la base en cours.
 

filiplarlibe

Nouveau membre
le serveur c'est FROM nom_serveur.TAEDG50
et la base en local c'est la base en cours ou le code et les requetes sont exécutées.
J'ai une base que j'utilise ou je crée les requetes et des formulaires et a partir de celle -ci je me connecte à d'autres bases sur un serveur ou il y a la table TAEDG50. Et je veux créer une table temporaire avec les données de la table TAEDG50 dans la base local et non sur le serveur.

J'espère avoir été un peu plus clair.
 

zeb

Modérateur
Ah oui, c'est plus clair ;) (bon, je n'avais peut-être pas fait trop d'efforts)
Donc ça, ça marche quand tu exécutes en local.

Mais la nouvelle requête, l'exécutes-tu en local ou sur le serveur ?

Sinon, à toi de vérifier ce qui marche ou pas. Essaye successivement ceci :
Code:
SELECT 'TOTO'
SELECT <nombre de champs en fonction de la table> INTO TABLE_TEMP
SELECT <nombre de champs en fonction de la table> INTO nom_local.TABLE_TEMP
SELECT * INTO nom_local.TABLE_TEMP FROM nom_serveur.TAEDG50
SELECT * INTO nom_local.TABLE_TEMP FROM nom_serveur.TAEDG50 ORDER BY D50_C_FBC, D50_D_DEB_VAL_ID DESC;
etc.

(Je n'ai pas ACCESS à dispo pour essayer les bonnes syntaxes :( )
 

filiplarlibe

Nouveau membre
J'ai essayé toutes tes syntaxes mais j'ai une erreur ODBC à chaque fois donc je ne sais pas comment faire pour pouvoir mettre mes données dans une table.
 

zeb

Modérateur
Ca marche bien comme ca [..] recordset.Open "SELECT DISTINCT(D50_C_FBC) FROM nom_serveurTAEDG87", nom_connection, adOpenKeyset, adLockPessimistic
Faudrait savoir ! Qu'arrives tu à faire sur le serveur ?
 

filiplarlibe

Nouveau membre
Ben oui comme ca ca marche bien mais quand tu veux mettre le résultat de la requete dans une table sur la base local (INTO) ca ne marche pas. je m'explique :

ca ca marche :

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

mais ca non :


recordset.Open "SELECT DISTINCT(D50_C_FBC) INTO base_locale.TABLETEMP FROM nom_serveur.TAEDG87", nom_connection, adOpenKeyset, adLockPessimistic

Et c'est ca que je voudrais faire.
 

filiplarlibe

Nouveau membre
Y aurait il quelqu'un pour m'aider car je ne vois vraiment pas comment faire pour résoudre ce problème.
 

Freeman23

Expert
Je pense pas que tu puisses le faire directement en une seule instruction :

Donc passes par 2 recordset.

Code:
Dim rssource as dao.recordset
Dim rstmp  as dao.recordset

set rssource =  recordset.Open "SELECT DISTINCT(D50_C_FBC) FROM nom_serveurTAEDG87", nom_connection, adOpenKeyset, adLockPessimistic ' il faut peut etre l'option Opendynaset (movenext,movefirst)
set rstmp = currentdb.tabledefs("TABLETEMP").openrecordset
rssource.movefirst
while not rssource.eof
   rstmp.addnew   
   rstmp!D50_C_FBC = rssource!D50_C_FBC
   rstmp.update
   rssource.movenext
wend
rstmp.close
rssource.close

Voilà j'espère que ca répondra à ton pb.
Mes excuses au modo, reste à savoir si il s'agit d'un déterrage utile ou non... le temps nous le dira.
 

zeb

Modérateur
Moderatio dixit :
■ Le déterrage de topic, c'est mal [:aha ]
■ Le déterrage utile de topic, c'est bien :)
Ne pas lire les règles, et ne pas utiliser la balise
Code:
 pour publier un exemple de code, c'est [b]très mal[/b] !![:zeb]
■ Lire les règles, et les appliquer, même [i]a posteriori[/i], c'est [b]très bien[/b] !![/strike] :jap:
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 069
Membres
1 586 286
Dernier membre
petitangebleu1977
Partager cette page
Haut