Utiliser données d'une table comme variable

Bonjour,
Je voudrais utiliser le résultat de deux champs d'une requete de création comme variable de création de fichiers texte :
J'ai une table avec X lignes concernant plusieurs critères (je ne peux pas divulguer les informations donc je vais tenter d'etre clair). Sur tous les champs je possède un champ ID et un champ NomID. Je voudrais que ces deux champs soient utiliser dans une boucle afin que pour chaque ID trouvé, un fichier texte soit créer avec comme nom de fichier son NomID + ID et que chaque fichier ne concerne bien évidemment que les données qui lui sont rattachées. Je voudrais savoir aussi comment récupérer seulement une partie d'un nom de fichier

Voici le code que j'ai mis en place mais qui ne fonctionne pas pour le moment (je pense que les Field ne marchent pas mais je ne sais pas comment identifier mes champs) :
Sub export_FUM()
On Error Resume Next

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")
F = rst.Field([Nom rattaché à])
G = rst.Field([ERD Id])
rst.MoveFirst
    While Not rst.EOF
    For Each F In rst
        DoCmd.TransferText acImportDelim, fum_test, "FUM_" + F + "_" + G + "_31122011.txt", "C:\Documents and Settings\sghn4628\Desktop\Sujet PFC\FUM_" + F + "_" + G + "_31122011.txt"
        rst.MoveNext
    Wend
rst.Close
            


End Sub


8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Merci j'ai eu la réponse entre temps =) Sinon j'aurais une autre question :
    DoCmd.TransferText acImportDelim, fum_test, "test1", chemin

    Sur cet exemple, je nomme le nom de la future table créée mais chemin est une variable récupérer avant dans un formulaire (en public string) mais j'ai la nette impression que dans le transfert text on ne puisse pas allouer une variable à ces données. Quelqu'un pour m'aider un peu please? Merci d'avance =)
    1. Bonjour,

      En principe, que le chemin soit une variable ou ecrit en "dur" ne change rien.

      Quelle ACCESS avez vous??
      1. Access 2003. Mes variables public sont déclarées dans le code du formulaire et je les utilise dans le module, mais je ne crois pas que ceci change grand chose étant donné qu'elles sont public. Or quand j'execute mon programme on me dit premièrement que la méthode requiert un argument Nom Table. Donc ok j'ai rentré celui ci en dur et derrière on me répond que la méthode requiert un Nom Fichier puisque celui n'est pas écrit en dur. Or j'ai besoin de récupérer le nom du fichier qui est différent chaque mois. Donc la variable est indispensable mais il ne l'accepte pas.
        1. Re,

          Quand il y a l'erreur, le programme s'arrete sur la ligne Docmd......

          Placez le curseur sur les variables pour voir leur affectation.
          1. DoCmd.TransferText acImportDelim(=0), fum_test(=vide), fichier(=vide), chemin(=vide)
            Je ne comprends pas pourquoi il s'initialise à 0. Le message d'erreur reste le même, la variable n'est pas prise en compte (fichier) et donc il demande un nom de table, j'ai bien recréer/sauvegarder ma spécification au cas ou, tout est bon.

            Voici l'ensemble de mon code d'intégration (Texte3 et Texte10 proviennent d'étiquettes ou je rentre les données dans le formulaire pour qu'il aille les chercher lui même). Je n'ai pas de boite de dialogues car j'ai un trou sur le codage de cette dernière et que pour faire mes tests mon étiquette fait tout autant l'affaire :

            Public chemin As String
            Public fichier As String
            
            Option Compare Database
            
            Private Sub Commande9_Click()
            chemin = Texte3
            fichier = Texte10
            
            Call import_FUQ
            End Sub
            


            Option Compare Database
            
            'Sub suppr_1e_ligne()
            
            '  Dim sLignes As String
            '  Dim i As Long
            '  Dim ff1 As Integer
            '  Dim ff2 As Integer
            'Dim colLignes As New Collection
            '  ff1 = FreeFile
            ' ff2 = FreeFile
            ' Open "C:\Documents and Settings\sghn4628\Desktop\Sujet PFC\FUM_MOBISTORE_15314CEN_31122011.txt" For Input As #ff1
            ' Open "C:\Documents and Settings\sghn4628\Desktop\Sujet PFC\FUM_MOBISTORE_15314CEN_31122011(test).txt" For Append As #ff2
            '  i = 1
            '        While Not EOF(ff)
            '            Line Input #ff, sLigne
            '            If i <> 1 Then
            '                colLignes.Add (sLigne)
            '            End If
            '            i = i + 1
            '            Wend
            'End Sub
            
            
            Sub import_FUQ()
            
            DoCmd.TransferText acImportDelim, fum_test, test1, chemin
            
            Call exe_requetes
            
            End Sub
            
            Sub exe_requetes()
            
            'Execute les requetes de la base
            DoCmd.RunMacro "macro1"
            
            Call export_FUM
            
            End Sub
            
            Sub export_FUM()
            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")
                F = rst.Field([Rattaché à Id])
                G = rst.Field([ERD Id])
                    rst.MoveFirst
                        While Not rst.EOF
                        For Each F In rst
                            DoCmd.TransferText acExportDelim, fum_test, "FUM_" + F + "_" + G + "_31122011.txt", "C:\Documents and Settings\sghn4628\Desktop\Sujet PFC\FUM_" + F + "_" + G + "_31122011.txt"
                    rst.MoveNext
                Wend
            rst.Close
                        
            
            
            End Sub
            
            1. Re,

              Public chemin As String
              Public fichier As String

              Dans un module pas en entete de formulaire pour que vous puissiez les utiliser dans un module externe au formulaire.
              1. Ah merci c'est bon ils ont retrouvé une bonne place. En revanche maintenant je tombe sur : Le champ 'F1' n'existe pas dans la table de destination... Je n'ai aucun champ nommé F1 et le moteur Access nomme les champs champ1 (je n'ai pas initialiser la premiere ligne comme nom de champs parce que je dois traiter celle ci avant.