Importation De Données D'une Base À Plusieurs Tables Liées Vers Sa Mise À Jour
#1
Posté 12 octobre 2011 - 20:38
Je suis actuellement coincé dans la mise à jour d'une base de données créée sur Filemaker pro 11 advanced.
Ma table originale nommée SMSW 1.0 comporte 4 tables dont deux sont étroitement liées.
Pour passer à une nouvelle version mise à jour nommée SMSW 1.1, j'ai créé un script permettant d'importer les données de chaque table.
Les données frais de déplacement d'une table et données personnelles d'une autre passent sans problème dans la nouvelle version.
Par contre, j'ai deux tables liées, demandes et dossiers qui à l'importation me mélangent le contenu des fiches.
J'essaye de m'expliquer :
Dans la table des Demandes, j'ai 30 enregistrements. Certaines demandes permettent l'ouverture de dossiers mais pas toutes.
C'est ainsi que je peux avoir 30 demandes mais seulement 20 dossiers ouverts.
Chaque dossier correspond d'office à une demande. Mais chaque demande ne génère pas d'office un dossier.
Lorsque j'importe les données de ces deux tables, les 30 demandes s'importent normalement, par contre certaines données des dossiers se confondent avec les demandes qui ne permettaient pas d'ouvrir de dossier, ce sont les rubriques liées qui déclenchent cet ouragan.
Que puis-je faire pour éviter ce brouhaha dans les fichiers de mes collègues?
Je peux joindre un fichier si cela peut aider à me sortir de cette situation.
Merci d'avance à qui pourra m'aider.
#2
Posté 13 octobre 2011 - 00:14
Il n'est pas facile de répondre sur le fonctionnement de script d'une application dont on ne lit que le récit... mais petit détail qui peut avoir son importance : dans les scripts d'importation, avez-vous bien décoché "Entrer automatiquement les valeurs prévues pendant l'importation" ?
"Le chemin n'existe pas, ce sont nos pas qui font le chemin (Antonio Machado)"
#3
Posté 13 octobre 2011 - 06:44
assure toi d'abord que à la fermeture de la base de données un script soit lancé qui va à chaque table rechercher tous les enregistrements, sinon le risque est que sur une des tables il importe uniquement les enregistrements trouvé après une recherche.
Ciao.
Thierry Riva
QuickClik
Développement • Formation • Coaching • Organisation
CH-1224 Chêne-Bougeries (Genève)
Skype: thierryriva • iChat: quicclik • www.power-office.ch
------------------
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information. (Albert Einstein)
#4
Posté 13 octobre 2011 - 08:42
Je cherche encore mais je pense que la numérotation des demandes qui est différente de celles des dossiers m'induit en erreur pour le script d'importation.
#5
Posté 13 octobre 2011 - 08:53
Ciao.
Thierry Riva
QuickClik
Développement • Formation • Coaching • Organisation
CH-1224 Chêne-Bougeries (Genève)
Skype: thierryriva • iChat: quicclik • www.power-office.ch
------------------
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information. (Albert Einstein)
#6
Posté 13 octobre 2011 - 14:00
Les dossiers et les demandes doivent être liés avec un identifiant unique. Je crains, lorsque tu nous parles
de "numérotation" des demandes, que ce ne soit pas le cas.
Tu peux effectivement nous joindre ton fichier
Gilles
MBP17/Leo/FMD6/FMD7/FMP8A/FMP9A/FMP10A/FMP11A
Editomac - FBA + FTN
Conseil, développement, formation, soutien à distance,
ebooks, cahiers pratiques et fiches astuces FileMaker,...
http://www.editomac.fr
#7
Posté 13 octobre 2011 - 23:13
Je ne vois pas comment les valeurs se mélangent, une table est constituée d'enregistrements et chacun des enregistrements ont des champs, je ne comprends pas comment tu peux avoir des erreurs, tu dois avoir les même nom de rubrique donc tu dois important sur le "Nom identiques". Même si tu as 300 liens, il n'entre pas en ligne de compte.
Pour les liens il faut penser à bien importer les même valeurs d'identifiant que sur la table d'origine, sinon tes valeurs calculées vont être fausses et tu ne retrouveras pas tes petits dans tes tables liées.
Lors de l'import il n'y a pas de script qui entre en jeu, à part, bien sûr celui de l'import
ATTENTION à ne pas vouloir visualiser tes données sur les modèles avant la fin COMPLETE de TOUS les imports, dans ce cas tu peux avoir des données corrompues à cause des calculs qui ne se font pas bien
#8
Posté 14 octobre 2011 - 05:14
Passer d'une version l'autre d'une application n'est jamais une chose simple. Il faut mettre au point toute une procédure. Fabrice dans site en a développé une : http://www.1-more-th...es-donnees.html
Lorsqu'on utilise des ID calculés automatiquement en entrée, Il ne faut pas seulement décocher l'option : "Entrer automatiquement les valeurs prévues pendant l'importation".
Il faut aussi redéfinir la valeur de départ de cet ID avec le pas de script Définir valeur en série suivante (Mon_ID ; max ( Mon_ID) +1 ) car sinon la nouvelle version repart avec ses valeurs à elle, ce qui détermine des liaisons sans logique comme dans ton cas et des dossiers qui se mélangent.
"Le chemin n'existe pas, ce sont nos pas qui font le chemin (Antonio Machado)"
#9
Posté 14 octobre 2011 - 15:50
Je pense que le problème vient aussi du fait que certains modèles d'une table utilisent des données d'une autre table.
En attendant, je vous souhaite une excellent week-end ensoleillé j'espère.
#10
Posté 18 octobre 2011 - 08:00
Je n'ai pas pu essayer la proposition de Philippe car j'ai du mal à la comprendre.
"Il faut aussi redéfinir la valeur de départ de cet ID avec le pas de script Définir valeur en série suivante (Mon_ID ; max ( Mon_ID) +1 ) car sinon la nouvelle version repart avec ses valeurs à elle, ce qui détermine des liaisons sans logique comme dans ton cas et des dossiers qui se mélangent."
Philippe, peux-tu développer un peu si c'est possible pour toi?
Je vous joins les fichiers si vous voulez voir mieux ce dont je parle. Les fiches encodées sont fictives et ne correspondent pas à des situation réelles.
Merci d'avance.
#11
Posté 18 octobre 2011 - 08:03
#12
Posté 18 octobre 2011 - 14:05
Lorsque tu importes une table, tu n'importes que les valeurs. Le numéro d'identifiant qui s'incrémente automatiquement à chaque nouvelle fiche n'est pas redéfini. Donc en créant de nouvelles fiches, elles reprennent des numéros déjà donnés et ça devient le gros mélange sur la base.
A la fin de chaque table importée, il est nécessaire d'ajouter le pas de script Définir valeur en série suivante (Mon_Identifiant ; max ( Mon_Identifiant ) +1 ) car il te permet d'enchainer sur de nouvelles fiches avec un numéro d'identifiant créé automatiquement dans la continuité des autres numéros.
"Le chemin n'existe pas, ce sont nos pas qui font le chemin (Antonio Machado)"
#13
Posté 19 octobre 2011 - 09:34
@Tora : pourquoi mettre ce pas dans un script ? il suffit de modifier le n° de depart dans la config de la rubrique de l'identifiant.
- à l'import décocher "Entrer automatiquement les valeurs prévues pendant l'importation"
- apres import verif pour chaque table l'id max
- modifier dans la configuration des rubriques identifiants le n° de depart avec le max ID + 1
c'est la meme demarche que Tora mais sans ajouter de pas dans un script.
#14
Posté 19 octobre 2011 - 10:15
Non fab Tora a raison pour des raisons de maintenance évidentes il vaut mieux le faire dans le script d'importation.
Si tu dois faire ce genre de manbipulation à chaque changement de version un jour ou l'autre tu vas oublier de reconfigurer une rubrique identifiant.
De plus lorsque tu distribues tes produits les utilisateurs veulent des choses simples et n'ont pas envie de mettre les mains dans la gestion de la base de donnée.
Je ne parle même pas des Runtimes
A bientôt
Philippe.
#15
Posté 19 octobre 2011 - 10:30
Activer modèle["fraisDeplacement"]
Afficher tous les enregistrements
supprimer tous les enregistrements
Importer enregistrements [Sans fenetre; "$cheminFichier";Ajouter;Windows ANSI] // La verifie que nom concordants apparait, et que "entrer automatiquement les valeurs prévues..." N'EST PAS COCHE"
Trier enregistrements [Rétablir,Sans fenêtre] //( là défini ta clé primaire en ordre croissant)
Afficher enreg/requete/page [dernier(e)]
Definir valeur en serie suivante [ "fraisDeplacement::zkp;incrementSerie ( fraisDeplacement::zkp ; 1)]
Voila essaies cela le tri prends du temps et reviens en gros a Définir valeur en série suivante (Mon_Identifiant ; max ( Mon_Identifiant ) +1 )
La methode de Fabrice est excellente aussi et plus rapide (pas de tri) mais il faut un peu plus de temps pour la comprendre
Evidemment ta vaiable $cheminfichier est le chemin vers ton fichier .fp7
Philippe
Aussi tagué avec importation, mise à jour
Forum technique FileMaker →
Tables et rubriques →
Importer Contrat Relation MultipleCommencé par Mat Matt, 26 mars 2012 |
|
|
||
Forum technique FileMaker →
Liens →
Creation Automatique D'enrengistrements Via Une Table "saisie"Commencé par maxilouis, 20 août 2011 |
|
|
FM Source est un service gratuit de La Source multimédia - spécialistes FileMaker
Développement FileMaker. Formation FileMaker. Hébergement FileMaker. Le blog FileMaker. Vente de licences FileMaker. Conférence FileMaker. Forum FileMaker. FileMaker resources














