Requete sql select vba

eljojo_e Messages postés 1255 Statut Membre -  
blux Messages postés 5033 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je souhaite faire une requête select comme ceci :

Dim TPTX As Recordset
Set data_base = CurrentDb
Set TPTX = data_base.OpenRecordset("T Pgm TX", dbOpenTable)
cTPTX = TPTX.RecordCount ' nombre d'enregistrement

az = TPTX![COMMUNES]

TPTX.MoveFirst

For a = 1 To cTPTX

sql = "SELECT [T Liste des communes].[code INSEE] FROM [T Liste des communes] WHERE [T Liste des communes].Commune =" & az & ""

Sauf que docmd ne fonctionne pas sur une requete sql select.

Je voudrais savoir comment récupéré le code INSEE qui en résulte.

Merci cordialement,

5 réponses

  1. blux Messages postés 5033 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    beaucoup de confusion dans ton code.

    Tu cherches à récupérer quoi, à partir de quoi, et pour en faire quoi ?
    0
  2. eljojo_e Messages postés 1255 Statut Membre 155
     
    En faite c'est pour comparé des codes insee existant dans une table (T Pgm TX) qui a été importé d'un fichier excel à une base contenant les communes et leurs code insee qui sont exacte (T liste des communes). Comme je suis sur que l'orthographe des commune dans les 2 tables ont identique il me reste a comparer les code insee.

    sql = "SELECT [T Liste des communes].[code INSEE] FROM [T Liste des communes] WHERE [T Liste des communes].Commune =" & az & ""

    az étant le nom de commune de l'enregistrement en cour après j'ai plus qu'a comparé mais j'arrive pas à executer la requete sql.
    0
  3. moiced59 Messages postés 1161 Statut Membre 60
     
    bonjour

    Au début de ton code tu utilise un recordset fais de meme a la place du docmd.runsql
    0
  4. blux Messages postés 5033 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Tu peux plutôt utiliser 'dlookup', regarde l'aide et tu verras que c'est la meilleure solution à problème (pas de requête, ni de recordset)...
    0
    1. eljojo_e Messages postés 1255 Statut Membre 155
       
      Dlookup est très long à executer surtout si on doit l'utiliser sur 3000 enregistrement
      0
    2. blux Messages postés 5033 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Justement, utiliser dlookup est plus rapide que de créer 3000 recordset pour les parcourir.
      Si le champ commune possède un index, l'accès à l'information sera immédiat.

      dlookup("[code INSEE]","[T Liste des communes]","commune = '" & az & "'")
      0
    3. eljojo_e
       
      J'ai aucun champ d'indexé .. Mais sa reste long car toutes mes table de base sont sur un serveur (on est 10 à l'utiliser) donc l'accès est long
      0
    4. blux Messages postés 5033 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Ca sera toujours plus rapide que de faire du SQL, car access ne se comporte pas comme un vrai sgbd quand il est en réseau : il rapatrie toutes les données en local avant de faire son WHERE...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eljojo_e Messages postés 1255 Statut Membre 155
     
    "Au début de ton code tu utilise un recordset fais de meme a la place du docmd.runsql"

    Comment sa utiliser un recorset ?
    0