.txt --> VB --> BD acces (une bd acces a partir d'un .txt)

.txt --> VB --> BD acces (une bd acces a partir d'un .txt) - VB/VBA/VBS - Programmation

Marsh Posté le 17-04-2004 à 13:51:44    

Bonjour tout le monde :)
 
je dois creer une application qui a partir d'un fichier text me cree une base de données sous acces (en fait c'est une table que je cree, et dans le fichier  .txt les colonnes sont bien definies avec une tab comme separateur). apres avoir creer ma table mon app doit me permettre de faire plein d'operation sur les données, les classeiques quoi (maj, add, del etc.).
 
le probleme c'est que je n'arrive pas a creer la table a partir de mon .txt, en plus ma table doit etre alimentée regulierement par des .txt c'est a dire que les données je les recois en format .txt et c'est l'app qui le fait passer dans la table acces.
 
 
donc est-ce que quelqu'un saurait qu'est ce qu'il faut faire vraiment pour que la table soit bien créée a partir de ce fichier .txt, et comment fair pour lui dire apres de rajouter les données a la table ?
 
 
merci a tous.


Message édité par naeh le 17-04-2004 à 13:52:19
Reply

Marsh Posté le 17-04-2004 à 13:51:44   

Reply

Marsh Posté le 18-04-2004 à 14:20:49    

Utilise ADO (ocx Microsoft ActiveX Data Object)
 
Oublie pas d'installer le dernier service pack (6 je pense) parce que d'origine, ADODC fout parfois le boxon quand tu fais des packages  ;)  
 

Reply

Marsh Posté le 18-04-2004 à 14:23:01    

mais comment je fais ca ?
 
en fait ce que je cherche c'est comment lui dire de ccreer la table a partir du fichier text en programmation, parce que l'application devrait le faire pusieurs fois apres !

Reply

Marsh Posté le 19-04-2004 à 11:48:32    

Il va falloire creer la table à la main, et ensuite son alimentation se fera de façon automatique, à chaque nouveau fichier.
dans l'ordre, il faut :
-

  • d'abord importer ton 1er fichier sous access (Manip décrite ci-dessous : dans le point 6 : choisis création d'une nouvelle table)

-

  • ensuite, creer une "spécification d'import" (= un modèle sur la façon de faire l'import de ce type de fichiers, qu'Access utilisera ensuite pour tous les autres fichiers). Pour celà, il va falloire importer un 2e fichier : reprend la Manip ci-dessous avec cette fois :

       -  dans le point 6 : tu vas l'ajouter a la table que tu viens de créér avec le 1er fichier
        - au point 9 : en bas à droite selectionner "Avancé" : vérifier les noms et formats des champs +  "enregistrer sous" : donner un nom à la spécification d'import.
 
Manip d'import :
 dans l'onglet "table" d'access :  
1 -  faire "Nouveau" : une boite s'ouvre  
2 -  selectionner "importer la table" + Ok.  
3 -  parcourir et selectionner le fichier à importer
4 -  choisir l'onglet (si import d'un fichier excel) et faire suivant  
5 -  cocher si l'on veut que la 1ere ligne contienne les entêtes de colonnes ( + suivant)  
6 -  préciser si l'on crée une nouvelle table ou si l'on veut que tes données s'ajoutent à une table existant (dans ce cas, attention aux formats des champs !) (+suivant)  
7 -  choix du format des champs si import d'un fichier texte (+ suivant)  
8 -  indiquer si l'on veut une clé primaire ou pas (+suivant)  
9 - donner le nom de la table qui sera créée (+ Terminer)
 
 
-

  • enfin voici le code executant l'import automatique des fichiers suivants. (je ne connais pas l'étendu de tes connaissances sous access, fais-moi savoir si tu ne sais pas où coller ce code, ou comment le lancer)

ce code va chercher dans un dossier précis tous les fichiers ".txt", et les importe un par un dans ta table :
 
Function Search()  
Dim i As Integer
Dim j  
Application.FileSearch.LookIn = "C:\Chemin\Dossier\"  
Application.FileSearch.FileName = "*.txt"  
 
    If Application.FileSearch.Execute > 0 Then  
        For i = 1 To Application.FileSearch.FoundFiles.Count  
            j = Importer(Application.FileSearch.FoundFiles(i))  
        Next i          
    Else  
        MsgBox "Aucun fichier n'a été trouvé !"  
    End If  
 
Kill Application.FileSearch.FoundFiles(i) ' cette ligne supprime le fichier, mais tu préfèrera peut-être le déplacer dans un dossier archive...
End Function  
   
 
Public Function Importer(Texte As String)  
DoCmd.TransferText acImportDelim, "Nom_specification_import", "Nom_table_import", Texte, True, ""
End Function

Reply

Marsh Posté le 20-04-2004 à 18:32:12    

merci pour les reponses :)
 
c'est bien la manip que j'avais fait, en fait c'est juste mon type de fiormat que je devais creer pour que ca fonctionne correctement.
l'importation de mes fichiers se fait sans aucun probleme sous access seulement je ne sais pas comment on fait pour lancer cette procedure de visual basic (je dis bien VB et pas VBA :)) par programmation.
il y'a bien des methodes comme "run" ou "run macro" mais ces methodes là ne marche qu'avec l'objet docmd et cet objet n'est pas reconnu sous VB
comment faire ?
 
merci bcp :)

Reply

Marsh Posté le 21-04-2004 à 11:43:14    

j'connais pas bien VB.  
Est-ce que ça marcherait avec un lien hypertexte (ça marche entre 2 bases access)?
        With Commande
            .Hyperlink.Address = "C:\Chemin\BaseAccess.mdb"
            .Hyperlink.SubAddress = "Macro NomMacro"
            .Hyperlink.Follow
        End With

Reply

Marsh Posté le 25-04-2004 à 12:02:31    

et un ch'ti UP
 
pour les liens je ne connais pas
 
en gros ce que je veux faire c'est remplir une base acces a partir d'un fichier, je pense que c'est pas si compliuqué que ca hein ???
 
merci :)

Reply

Marsh Posté le 26-04-2004 à 22:45:54    

probleme resolu :)
 
j'ai utilisé les objets, fichiers, etc.
 
apres je lisais dans le fichier ligne par ligne et je decoupe la chaine par rapport a mon separateur et j'enregistre dans la table par un recordset :)
 
voila, merci pour vos essais :)


Message édité par naeh le 26-04-2004 à 22:47:19
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed