[Déplacé VB6 --> VBA] suppression doublons tabel access sous vba

cs_dacarolin Messages postés 1 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 25 février 2010 - 25 févr. 2010 à 12:24
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 25 févr. 2010 à 12:57
bonjour
j ai un message erreur execution 3141 dans l instruction select que je n arrive pas a corriger dans cette ligne de code ci dessous
qc peut il m aider merci
Set rst = CurrentDb.OpenRecordset("SELECT COUNT(*) As ( " & champs & " FROM & EntreprisesA & ),GROUP BY (" & champs & " ),Having count(*)> 1)", dbOpenSnapshot)


merci d avance
da

3 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
25 févr. 2010 à 12:45
Salut
Problème de structure de chaine de caractère ET de syntaxe SQL :
Si tu décomposes tes instructions comme ceci :
    Dim sTemp As String
    sTemp = "SELECT COUNT(*) As ( " & champs & _
            "  FROM & EntreprisesA & ), " & _
            " GROUP BY (" & champs & " ), " & _
            " Having count(*)> 1)"
    Debug.Print sTemp
    Set rst = CurrentDb.OpenRecordset(sTemp, dbOpenSnapshot) 

Tu verras que ta requète est mauvaise :

- Le "EntreprisesA" est surement une variable --> Il manque une sortie de chaine " et une entrée de chaine " à la suite :
" FROM "
& EntreprisesA & "
), " & _

- La fermeture de parenthèse après EntreprisesA est mal placée : elle devrait se trouver après champs

- Dans une instruction VB comme SQL, le nombre de parenthèses d'ouverture ( doit être le même que le nombre de parenthèses de fermeture ) : Compte-les, il en manque

- Dans une syntaxe SQL, il n'y a de virgules QUE pour séparer une liste, jamais pour séparer des instructions.

Au final, ta requète devrait donc ressembler à ça :
    sTemp = "SELECT COUNT(*) As (" & champs & ") " & _
            "  FROM " & EntreprisesA & " " & _
            " GROUP BY (" & champs & ") " & _
            " Having count(*)> 1"

Tu n'as pas dû chercher longtemps les raisons de ce cafouillage ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
25 févr. 2010 à 12:48
PS :
Si EntreprisesA est le vrai nom de ta table, il faut supprimer les &
    " FROM EntreprisesA " & _
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
25 févr. 2010 à 12:57
Au fait, quel est le rapport avec le titre de ta question ?

Le forum est un endroit où on peut poser des questions, certes, mais surtout où les membres peuvent rechercher des réponses (avant de poser ces questions) : Si ton titre n'a pas de rapport avec la question, cela ne servira à personne ...
0