Requete sql select vba

Fermé
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 - Modifié par eljojo_e le 7/10/2011 à 14:46
blux Messages postés 26006 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 - 13 oct. 2011 à 11:16
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,



A voir également:

5 réponses

blux Messages postés 26006 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
7 oct. 2011 à 16:02
Salut,

beaucoup de confusion dans ton code.

Tu cherches à récupérer quoi, à partir de quoi, et pour en faire quoi ?
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 152
8 oct. 2011 à 17:57
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
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
9 oct. 2011 à 08:10
bonjour

Au début de ton code tu utilise un recordset fais de meme a la place du docmd.runsql
0
blux Messages postés 26006 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
9 oct. 2011 à 15:46
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
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 152
13 oct. 2011 à 09:01
Dlookup est très long à executer surtout si on doit l'utiliser sur 3000 enregistrement
0
blux Messages postés 26006 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
Modifié par blux le 13/10/2011 à 09:56
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
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
blux Messages postés 26006 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
Modifié par blux le 13/10/2011 à 11:16
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

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

Posez votre question
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 152
13 oct. 2011 à 09:02
"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