Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

8 réponses
Avatar
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

8 réponses

Avatar
Raymond [mvp]
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" a écrit dans le message de
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




Avatar
Hugues
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

Avatar
Raymond [mvp]
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" a écrit dans le message de
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






Avatar
Raymond [mvp]
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" a écrit dans le message de
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







Avatar
Hugues
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
Avatar
Raymond [mvp]
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" a écrit dans le message de
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.







Avatar
Hugues
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.


Avatar
Hugues
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)
--