Utiliser données d'une table comme variable

Oukapaka Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   -  
Oukapaka Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   -
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



A voir également:

8 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,

syntaxe fields

Fields(0)

Fields("name")

Fields![name]
0
Oukapaka Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   5
 
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 =)
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,

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

Quelle ACCESS avez vous??
0
Oukapaka Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   5
 
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.
0

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

Posez votre question
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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.
0
Oukapaka Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   5
 
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
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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.
0
Oukapaka Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   5
 
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.
0