Différence de comportement entre table Access attachée ou non ?

Le
Hugues
Bonsoir à tous,
J'importe par requête environ 3.000.000 d'enregistrements issus d'un fichier
texte dans une table Access.
Si cette table est native dans mon fichier mdb, l'import se passe sans
problème.
Si je mets cette table dans un autre fichier mdb et que je l'attache dans
mon fichier initial, alors j'ai une erreur "dépassement de champ numérique".
Quelqu'un pourrait-il m'expliquer pourquoi ? (parce qu'en fait j'aimerais
bien utiliser une table attachée)
Merci.
Hugues
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Raymond [mvp]
Le #5054471
bonjour.

Parce que la description de ta table native peut accepter tous les
numériques du fichier import. alors qu'en importation le type de champ est
défini par le premier champ non null. si le premier champ est un entier, le
champ sera défini entier, si c'est un décimal le champ sera défini réel
double par exemple. selon le contenu de ton fichier tu pourras avoir une
erreur ou ne pas en avoir.
pour vérifier ton fichier, compare le type de champ de ta table et le type
de champ créé par l'import, il ne doit pas être le même.
Si tu attaches ton fichier texte dans ta base, tu auras le même problème de
déclaration. compare la aussi les deux structures de ton champ.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hugues" news:%
Bonsoir à tous,
J'importe par requête environ 3.000.000 d'enregistrements issus d'un
fichier

texte dans une table Access.
Si cette table est native dans mon fichier mdb, l'import se passe sans
problème.
Si je mets cette table dans un autre fichier mdb et que je l'attache dans
mon fichier initial, alors j'ai une erreur "dépassement de champ
numérique".

Quelqu'un pourrait-il m'expliquer pourquoi ? (parce qu'en fait j'aimerais
bien utiliser une table attachée)
Merci.
Hugues




Hugues
Le #5054241
bonjour.

Parce que la description de ta table native peut accepter tous les
numériques du fichier import. alors qu'en importation le type de champ est
défini par le premier champ non null. si le premier champ est un entier,
le

champ sera défini entier, si c'est un décimal le champ sera défini réel
double par exemple. selon le contenu de ton fichier tu pourras avoir une
erreur ou ne pas en avoir.
pour vérifier ton fichier, compare le type de champ de ta table et le type
de champ créé par l'import, il ne doit pas être le même.
Si tu attaches ton fichier texte dans ta base, tu auras le même problème
de

déclaration. compare la aussi les deux structures de ton champ.


Je ne sais pas si c'est ça...
J'ai créé une spécification d'attache qui décrit le fichier texte. Mon
fichier texte est bien attaché dans la base. Donc les champs sont
parfaitement définis.
La table Access dans laquelle j'importe (avec une requête) a la même
structure que cette spécification.
Mais ça ne marche que si cette table Access est native dans la base qui
exécute la requête, pas si cette table Access est dans un autre fichier mdb
et que je l'attache.
Hugues

Raymond [mvp]
Le #5054121
Mais ça ne marche que si cette table Access est native dans la base qui
exécute la requête, pas si cette table Access est dans un autre fichier
mdb

et que je l'attache.
Tu voudrais attacher une table attachée à un fichier texte dans une autre

mdb ?
désolé, c'est impossible. on ne peut pas attacher une table attachée dans
access, ou ai-je mal compris ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hugues" news:

bonjour.

Parce que la description de ta table native peut accepter tous les
numériques du fichier import. alors qu'en importation le type de champ
est


défini par le premier champ non null. si le premier champ est un entier,
le

champ sera défini entier, si c'est un décimal le champ sera défini réel
double par exemple. selon le contenu de ton fichier tu pourras avoir une
erreur ou ne pas en avoir.
pour vérifier ton fichier, compare le type de champ de ta table et le
type


de champ créé par l'import, il ne doit pas être le même.
Si tu attaches ton fichier texte dans ta base, tu auras le même problème
de

déclaration. compare la aussi les deux structures de ton champ.


Je ne sais pas si c'est ça...
J'ai créé une spécification d'attache qui décrit le fichier texte. Mon
fichier texte est bien attaché dans la base. Donc les champs sont
parfaitement définis.
La table Access dans laquelle j'importe (avec une requête) a la même
structure que cette spécification.
Mais ça ne marche que si cette table Access est native dans la base qui
exécute la requête, pas si cette table Access est dans un autre fichier
mdb

et que je l'attache.
Hugues






Raymond [mvp]
Le #5054021
Ok , compris.
ce qui ne m'avance pas.

Je la vide, je compacte la base de données et j'essaie d'exécuter la
requête

qryImport
quelle est la base que tu compactes ? moi je compacterais les deux, mais au

moins la data.mdb
essaie de compacter les deux.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hugues" news:updMM$
Merci de ton aide. Mais...
Non, ce n'est pas ça, je me suis mal fait comprendre.
Je recommence en essayant d'être plus clair.
J'ai un fichier texte "toto.txt" comprenant 3.000.000 de lignes.
Je l'attache dans ma base de données "prog.mdb" en créant une
spécification

d'importation qui va bien avec.
Je crée dans prog.mdb une table Access ayant la même structure :
tblImport.

J'ajoute une clé primaire sur plusieurs champs de sorte qu'il n'y ait pas
de

doublons.
Je crée une requête qryImport pour ajouter tous les enregistrements de
toto.txt dans tblImport.
=> Ça marche sans aucun problème.

Maintenant supposons que je déplace ma table tblImport du fichier prog.mdb
dans le fichier data.mdb.
(ceci dans le but de séparer mon programme de mes données)
J'attache ensuite la table tblImport dans le fichier prog.mdb.
Je la vide, je compacte la base de données et j'essaie d'exécuter la
requête

qryImport
=> là ça plante au bout d'un certain temps (la moitié environ) avec le
message "dépassement d'un champ numérique".

voilà...
Hugues







Hugues
Le #5054001
Merci de ton aide. Mais...
Non, ce n'est pas ça, je me suis mal fait comprendre.
Je recommence en essayant d'être plus clair.
J'ai un fichier texte "toto.txt" comprenant 3.000.000 de lignes.
Je l'attache dans ma base de données "prog.mdb" en créant une spécification
d'importation qui va bien avec.
Je crée dans prog.mdb une table Access ayant la même structure : tblImport.
J'ajoute une clé primaire sur plusieurs champs de sorte qu'il n'y ait pas de
doublons.
Je crée une requête qryImport pour ajouter tous les enregistrements de
toto.txt dans tblImport.
=> Ça marche sans aucun problème.

Maintenant supposons que je déplace ma table tblImport du fichier prog.mdb
dans le fichier data.mdb.
(ceci dans le but de séparer mon programme de mes données)
J'attache ensuite la table tblImport dans le fichier prog.mdb.
Je la vide, je compacte la base de données et j'essaie d'exécuter la requête
qryImport
=> là ça plante au bout d'un certain temps (la moitié environ) avec le
message "dépassement d'un champ numérique".

voilà...
Hugues
Raymond [mvp]
Le #5053671
Ta base et le fichier sont trop gros pour les communiquer par mail peut-être
?
si non tu peux me les envoyer dans un zip ou un rar ? je rechercherais avec
toi, on se sent moins seul !
enlève le XYZ. dans l'adressse.
(chez moi la grosseur importe peu : 4.6 mb)
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Hugues" news:
J'ai compacté les deux bases, j'ai toujours le même comportement.
Bizarre, n'est-ce pas ?
Hugues

quelle est la base que tu compactes ? moi je compacterais les deux, mais
au

moins la data.mdb
essaie de compacter les deux.







Hugues
Le #5053611
J'ai compacté les deux bases, j'ai toujours le même comportement.
Bizarre, n'est-ce pas ?
Hugues

quelle est la base que tu compactes ? moi je compacterais les deux, mais
au

moins la data.mdb
essaie de compacter les deux.


Hugues
Le #5053241
Merci de ta proposition, mais le fichier txt est trop gros (350 Mo->env.
30Mo zippé) et en plus il est confidentiel.
J'ai progressé dans ma réflexion :
- je peux importer dans ma table access tblImport de la base prog.mdb,
- ensuite je fais une requête pour remplir la table tblImport de la base
data.mdb à partir de celle de prog.mdb.
- Il ne me reste plus qu'à supprimer la table tblImport de prog.mdb et à
compacter.
ça, ça marche mais c'est trois plus long.

bon, je vais encore tester 2/3 trucs et si je trouve qq chose je te tiendrai
au courant.
--
Hugues


"Raymond [mvp]" a écrit :
Ta base et le fichier sont trop gros pour les communiquer par mail
peut-être ?

si non tu peux me les envoyer dans un zip ou un rar ? je rechercherais
avec

toi, on se sent moins seul !
enlève le XYZ. dans l'adressse.
(chez moi la grosseur importe peu : 4.6 mb)
--


Publicité
Poster une réponse
Anonyme