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

Transfert structure table seulement ne fonctionne pas

1 réponse
Avatar
Sophie
Bonjour à tous,

comme je n'ai pas eu de réponse à mes messages précédent j'ai pensé faire
autre chose. J'ai supposé que ca ne se faisait pas, que personne ne savait
comment faire ou alors que mon message n'étais vraimet pas clair! :)

Voilà, j'ai une base de donnée access qui contient un table à laquelle j'ai
ajouter un champ. Je dois la copier dans la base de donnée de quelqu'un
d'autre sans toutefois touché les données déjà contenu dans la table
destination (c'est à dire la base de donnée de l'autre personne). J'ai donc
pensé ajouter un champ dans la table destination mais ca ne fonctionne pas.
Toutes mes requêtes utilisant cette table ne fonctionne plus, comme s'il ne
reconnaissait plus la table. J'ai donc pensé à copier seulement la
structure de la table pour ainsi conserver les donnée de la table
destination mais il efface la table destination avant de copier la structure
donc ca efface le contenu de ma table destination (évidemment!). Voici le
code utilisé pour exporter le contenu de ma base : (dans cette exemple je
copie une table et son contenu)

DoCmd.TransferDatabase acExport, "Microsoft Access", Destination, acTable,
"DetailFraisDeplacement", "DetailFraisDeplacement", False

Et ca ne règle pas plus le problème de mes requêtes. J'ai toujours
fonctionner comme ca et tout à toujours très bien fonctionné. La différence
(et elle est immense) c'est que j'ai une table que normalement je ne
transfère pas parce que comme expliquer plus haut elle contient des données
personnelle de l'usager que je ne dois pas changer mais là un champ y a été
ajouté et je DOIS donc la transéférer sans modifier les données de l'usager
afin que le reste de ma base fonctionne. Normalement j'exporte 3 table dont
le contenu est modifier mais non la structure et tout fonctionne bien.
S.v.p. aider moi je n'ai plus d'idée et je dois vraiment exporter mes
requêtes et formulaires et tout le reste des modifications que j'ai dans
cette base de donnée d'origine. La chose que je suppose c'est que les
requêtes ne font pas vraiment le lien avec la table mais plutot avec un
identifiant de la table et cet identifiant ne se transfère pas lors de mes
exportations. De ce fait les requêtes ne trouve plus la table et mes champs
(de requête) ne fonctionne plus.

Je sais que c'est pas évident comme problème et pour l'expliquer non plus.
Je n'y comprend rien mais là j'ai vraiment besoin d'aide.

S.V.P. AIDEZ MOI!!!!!!! :)

J'ai fouillé partout dans les archives des newsgroup et sur plein de site de
support mais je n'ai rien trouvé. Même si vous me répondez que vous n'y
comprenez rien s.v.p. répondez, au moins je saurai que j'ai été lu mais que
c'est une problème impossible à résoudre...

Merci à tous
Bonne journée
Sophie

1 réponse

Avatar
Gilles
Sophie a écrit:
----------
Bonjour à tous,
...
Voilà, j'ai une base de donnée access qui contient un
table à laquelle j'ai ajouter un champ. Je dois la
copier dans la base de donnée de quelqu'un
d'autre sans toutefois touché les données déjà contenu
dans la table destination (c'est à dire la base de donnée
de l'autre personne).
...
DoCmd.TransferDatabase acExport, "Microsoft Access",
Destination, acTable, "DetailFraisDeplacement",
"DetailFraisDeplacement", False
...


Avec le paramètre "acExport",
l'instruction "DoCmd.TransferDatabase" fait simplement une
copie de la table "DetailFraisDeplacement" de la base
courante vers la base de destination. Or, la base de
destination contenant déjà une table de même nom, elle est
écrasée. C'est comme si tu copiais un fichier d'un dossier
vers un autre, le message d'avertissement en moins.

Je te suggère une autre approche.
1) importer la table à modifier (avec ses données) dans la
base courante;
2) modifier la structure de cette table;
3) exporter la table modifiée dans la base de destination.
En VBA, cela donne:

1) DoCmd.TransferDatabase acImport, "Microsoft Access",
Destination, acTable, "DetailFraisDeplacement",
"DetailFraisDeplacement_Temp", False
' attention de ne pas utiliser le nom d'une table
existante pour le nom de la table de destination (j'ai
ajouté "_temp" à la fin pour les distinguer)

2) CurrentDb.Execute ("ALTER TABLE
DetailFraisDeplacement_Temp ADD COLUMN
ChampAAjouter TypeChamp")
' "ChampAAjouter" est à remplacer par le nom du champ
et "TypeChamp" par... le type du champ(!) (Integer, Long
Text(20),Boolean...)

3) DoCmd.TransferDatabase acExport, "Microsoft Access",
Destination, acTable, "DetailFraisDeplacement_temp",
"DetailFraisDeplacement", False

Pour plus de renseignement sur la modification de la
structure de table par code, il faudra te tourner vers la
syntaxe des requêtes en SQL, domaine où je ne suis pas
très fort... mais je suis sûr qu'il y a plein d'aide
disponible sur la toile!
Bonne chance.

Gilles