VBA ACCESS : erreur 3251, pourquoi? [Résolu/Fermé]

Messages postés
116
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
- - Dernière réponse : blux
Messages postés
23909
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
- 8 juin 2012 à 13:57
Bonjour,

Voici le petit bout de code qui m'ennuie énormément. Le but est de sélectionner les données de la colonne F et de créer autant de fichier qu'il y a de données différentes (si ce sont les mêmes, elles iraient dans le même fichier)
Mais je me tape l'erreur 3251 qui dit l'opération n'est pas autorisée... un petit coup de main?

On Error Resume Next

'boucle qui prend chaque pfc pour l'insérer dans un fichier unique avec son nom de rattachement et son ERD ID
Dim F As DAO.Field
Dim G As DAO.Field
Dim DB As DAO.Database
Dim rst As Recordset
    Set DB = CurrentDb()
    Set rst = CurrentDb.OpenRecordset("fum&pfc")
    Set G = rst.Fields![ERD Id]
    Set F = rst.Fields![Rattaché à Id]
            rst.MoveFirst
                While Not rst.EOF
                    For Each F In DB
                        DoCmd.TransferText acExportDelim, "FUM_IMPORT", "FUM_" + F + "_" + G + "_31122011.txt", "C:\Documents and Settings\sghn4628\Desktop\Sujet PFC\FUM_" + F + "_" + G + "_31122011.txt"
                    Next
                Wend
            rst.MoveNext
    rst.Close
            
End Sub


Afficher la suite 

2 réponses

Messages postés
23909
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2640
0
Merci
Salut,

quelle ligne sort l'erreur ?
Messages postés
116
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
5
0
Merci
Salut blux, merci de t'interesser à mon sujet =)
Cette erreur sort juste après le For Each
Oukapaka
Messages postés
116
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
5 -
Bonjour blux, je reviens à nouveau vers toi parce que quelque chose m'échappe. J'ai repris la syntaxe utilisé auparavant pour supprimer ma table, vérifier que la requete n'existe pas et la supprimer, puis importer ma table. Sauf que le drop table ne passe pas, enfin je comprends pas pourquoi la table est toujours là et que le transfertext puisse ajouter des lignes à un fichier censé ne plus exister... Donc voici mon code :
Sub import_FUQ()
Dim StrSql As String
Dim Req As QueryDef
StrSql = "DROP TABLE FUM_MOBISTORE_15314CEN_ ;"
'Private Sub exe_vide_table()
'On Error Resume Next
For Each Req In CurrentDb.QueryDefs
        With Req
            If .Name = "kill_FUM" Then
                CurrentDb.QueryDefs.Delete "kill_FUM"
                Exit For
            End If
        End With
    Next Req
CurrentDb.CreateQueryDef "kill_FUM", StrSql
DoCmd.TransferText acImportDelim, "FUM_IMPORT", fichier, Chemin

Et je voulais aussi savoir s'il ne serait pas plus efficace de créer une requete de type delete que j'intègrerai en premier lieu avec un DoCmd.RunSql en passant ensuite directement à l'intégration du fichier
blux
Messages postés
23909
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2640 -
Il manque un DoCmd.RunSql après avoir rempli la variable StrSql...
Par contre, avant d'exécuter ton CreateQueryDef, tu remettras ce qu'il faut dans StrSql...

Mais il y a quand même quelque chose qui m'échappe : tu veux supprimer une table, supprimer une requête, recréer une requête (dont tu ne semble pas te servir dans la procédure) et importer du texte on ne sait où... C'est un peu subtil pour moi...

Quant à effacer le contenu de la table, c'est parfaitement possible, si elle a toujours le même nom...
Oukapaka
Messages postés
116
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
5 -
Oui comme la table a toujours le même nom, au final, je me suis dit qu'il était plus probant d'utiliser un delete comme j'ai affecter le nom FUM_machin_chose sans la date comme ça ma donnée de date est stockée et je ne suis plus encombré car ce fichier aura toujours le même nom.
Sinon pour répondre à ton interrogation : tout ceci est fait dans l'objectif que la base a été utilisée une première fois, donc je supprime la requete de suppression déjà utilisée, je vide ou supprime la table, et ensuite je recrée le processus pour importer la nouvelle table. Et le text est importé via les left et compagnie que tu m'as aidé à mettre en place hier, ou je récupère mes données dont j'ai besoin qui sont déclarées en public pour etre viable dans le formulaire et le module
Oukapaka
Messages postés
116
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
5 -
Et bien blux mon travail est terminé, je te remercie donc énormément de ce que tu m'as apporté. Tu es vraiment un chef et un excellent prof par correspondance ;)
blux
Messages postés
23909
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2640 -
De rien...