Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2010, 19h16   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 15
Points : 1
Points : 1
Par défaut Limite des 255 colonnes

Bonjour à tous,

Malgré mes recherches j'ai besoin de vos lumières.... je m'explique :

Je possède un fichier texte de 300 Mo contenant des données séparées par des délimiteurs "/".

Au total j'ai 489 colonnes de la forme suivante :

" données1/données2/données3/données4/...../données489" retour à la ligne et hop je recommence une nouvelle ligne.

Access ne permet que d'importer 255 Champs, ce qui est possible si je lie la table ( à partir de mon fichier), le hic est que j'ai besoin des colonnes restantes.

J'arrive à découper mon fichier texte de façon horizontale mais pas verticale (par colonne).

De fait pensez vous qu'il existe un moyen de créer une table avec les 255 premiers champs et une deuxième avec le reste?

Si oui qu'utilisez vous comme fonction? (VB, ou autre).

Merci d'avance.
DkA59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 10h54   #2
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
hello
en VBA, il est possible d'ouvrir le fichier texte et de faire de la lecture caractères par caractères pour ranger tout ça dans des tables. On peut bien sur, à ce moment là, répartir dans plusieurs tables de la façon souhaitée.
Exemple de code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    Open nom_fich For Binary Access Read Lock Read As #1
    Line Input #1, bidon 'on lit la ligne de textes de titres et on s'en fout
'    DoCmd.RunSQL "UPDATE Clients SET Clients.Caractéristique= 0;"  ' on efface les Caractéristique de la table clients
'    on va utiliser partiellement cette table pour éviter d'en créer une nouvelle, on la vide au paragraphe suivant
    DoCmd.RunSQL "Delete * from tempo"
    Set rs_fich = CurrentDb.OpenRecordset("tempo")
    With rs_fich
    Do
        .AddNew
        bidon = Input(1, #1) 'pour pouvoir lire le EOF qui suit le CrLf à la fin du fichier
        If EOF(1) Then Exit Do
        .Fields("CLIENT") = Input(7, #1)
        bidon = Input(3, #1) ' lecture de ";"
        .Fields("Caractéristique") = Input(7, #1)   ' on range Caractéristique 
        bidon = Input(3, #1) ' lecture de " Cr Lf
        On Error Resume Next
        .Update
    Loop Until EOF(1)
    Close #1
    .Close
Dans ce cas, je lis des formats texte en longueur fixe, ce qui est facile.
soit en lisant caractère par caractère, soit en cherchant de meilleurs algorithmes, tu dois arriver à résoudre ton pb.

Bon courage
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 20h16   #3
Invité de passage
 
Inscription : novembre 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 15
Points : 1
Points : 1
Bon rien à faire je n'arrive pas à utiliser votre code pour arriver à mes fins , mon objectif étant de créer deux tables avec une ligne de + de 400 champs.

Ci-joint copie d'une seule donnée peut être cela vous aidera :

Donnée1.txt

Sachant que j'ai près de 400 000 fichiers à traiter.

Merci encore pour votre aide.

DkA59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 06h52   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 605
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 605
Points : 30 955
Points : 30 955
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Citation:
Envoyé par DkA59 Voir le message
mon objectif étant de créer deux tables avec une ligne de + de 400 champs.
Si c'est plus de 400 champs par table ce ne sera pas possible, quel que soir la version d'Access.

Il faut que tu trouves un palliatif :

Est-ce que toutes les informations d'une ligne de données sont liées ? Si oui, par quoi ? Tu aurais la solution de répartir dans deux tables (soit 510 champs en tout) en mettant en premier champ une donnée unique (une clé que tu crées au cas où il y'en ait pas dans les tiennes), cette clé se retrouve dans les deux tables et on crée une liaison 1 à 1 entre les deux tables. (ce qui reprend le principe de base que t'expliques Simplifi plus haut).

Cependant cette solution pourra te poser des problèmes par la suite dans le cas où tu veux faire des traitements sur tes données, car une requête n'acceptera que 255 champs.

Donc voilà une solution possible.

Ou sinon passer par Excel (à partir de la version 2007) avec plus de 16000 colonnes.

Tu dis que tu as 400 000 fichiers et combien d'enregistrements par fichiers ?


Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 07h58   #5
Invité de passage
 
Inscription : novembre 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 15
Points : 1
Points : 1
En fait j'ai 1 enregistrement par fichier, au départ j'ai tout regroupé dans un seul fichier en les copiant tous dans un seul mais mon problème reste le même.

J'ai pensé à 2 solutions la première consisterait à lire le fichier choisir le "numéro" de champs à récupérer puis laisser les autres inutiles, ou la seconde utiliser Excel non pas en ligne mais en colonne.

Le hic ma connaissance VB est insuffisante pour écrire une boucle qui ouvre chaque fichier copie les valeurs dans la feuille puis me range tout ceci bien comme il faut dans 2 feuilles ( ou déjà même une seule...).

Un ancien collègue ... à la retraite (pas de bol ^^) utilisait un fichier excel pour le faire mais sur un seul fichier peut être que si je retrouve le code cela pourrait donner une idée à quelqu'un.
DkA59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 10h16   #6
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello
vu les données txt de ton fichier, il faut certainement refaire un étude assez large pour ranger les données dans plusieurs tables.
Une centaine de colonnes sur un sujet me semble déjà beaucoup (trop)
pas besoin d'autant pour l'adresse du client
ensuite un certain nombre de "champs" sont en fait des étiquettes commme
Citation:
|P|HP|HC|P|HP|HC|TOTAL|P+HP|KVARH|PHI|E HT|E HT|E HT|CT HT|
enfin ces 14'"champs' se rerouvent avec des valeurs
Citation:
|JANV|259|248|166|16972|48756|32552|98280|17084|0,259|7405||11605|11,808|
multiplié par 12
Avec le titre on a 13x14 soit 182 "champs" à mettre dans une sous table avec 14 colonnes
ainsi de suite
avec pour finir
Citation:
DATE D ECHEANCE CONTRACTUELLE................: 12/12/16


Analyse, Analyse

toute pub mise à part, c'est exactement mon métier
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h24.


 
 
 
 
Partenaires

Hébergement Web