Se connecter avec
S'enregistrer | Connectez-vous

Pb requetes sql Access (vba)

Dernière réponse : dans Programmation

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.

Autres pages sur : requetes sql access vba

Lassé par la pub ? Créez un compte

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.
Expert Programmation

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 :
  1. SELECT 'TOTO'
  2. SELECT <nombre de champs en fonction de la table> INTO TABLE_TEMP
  3. SELECT <nombre de champs en fonction de la table> INTO nom_local.TABLE_TEMP
  4. SELECT * INTO nom_local.TABLE_TEMP FROM nom_serveur.TAEDG50
  5. 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 :(  )
Expert Programmation

Citation :
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 ?

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.

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

Donc passes par 2 recordset.

  1. Dim rssource as dao.recordset
  2. Dim rstmp as dao.recordset
  3.  
  4. 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)
  5. set rstmp = currentdb.tabledefs("TABLETEMP").openrecordset
  6. rssource.movefirst
  7. while not rssource.eof
  8. rstmp.addnew
  9. rstmp!D50_C_FBC = rssource!D50_C_FBC
  10. rstmp.update
  11. rssource.movenext
  12. wend
  13. rstmp.close
  14. 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.
Expert Programmation

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 très mal !![:zeb]
  • Lire les règles, et les appliquer, même a posteriori, c'est très bien !! :jap: 
  • [/strike]
    Lassé par la pub ? Créez un compte