Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesSalut tout le monde,
J'ai une table de données JMP statique qui contient des informations historiques anciennes (données héritées).
J'ai une autre table de données JMP qui contient de nouvelles données. Cette table est alimentée à partir d'une base de données via une requête de base de données JMP. Cela signifie également que JMP me fournit automatiquement un joli script qui permet de mettre à jour la table de la base de données à chaque fois que je l'exécute.
Maintenant, je souhaite que l'ancienne table soit ajoutée aux nouvelles données extraites de la base de données, évidemment sans perdre les anciennes données. JSL est probablement nécessaire pour cela, mais je n'arrive pas à le comprendre moi-même.
Toute aide sera appréciée avec plaisir,
Merci beaucoup
Gars
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesParfait!Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesOui! Cela fonctionne comme prévu maintenant ! Merci Hadley!
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesSalut,
J'ai une autre solution qui, je pense, pourrait fonctionner.La fonction de concaténation revient à l'ajout à la première table (dt1), mais crée désormais une colonne source pour garder une trace des lignes qui se trouvaient dans dt1 et de celles qui ont été ajoutées à partir de dt2. "Onruncomplete" obtient désormais le nom de la table dt2 puis recherche la colonne ":Source table", en sélectionnant et en supprimant les lignes "dt2".Il supprime ensuite ":Table source".Veuillez essayer cela et faites-moi savoir si cela fonctionne.
query<<RUN></RUN>
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesMerci Hadley.
Je viens d'ajouter cette commande entière à la fin de mon script, de changer dt en dt1 (même si cela ne devrait même pas avoir d'importance, je pense), de l'enregistrer et de l'exécuter. Le script s'exécute toujours sans erreurs ni messages d'alerte, mais lorsque je l'exécute une deuxième fois, les doublons continuent d'être ajoutés.
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesRe-bonjour,
En y réfléchissant un peu plus, vous pouvez toujours ajouter une commande pour supprimer les lignes en double de dt1 après avoir ajouté dt2 à dt1.Cela pourrait résoudre le 2ème problème que vous avez rencontré.Sélection et suppression de lignes en double avec condition
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesSalut,
L'ajout d'une fonction Close() au script onruncomplete permettra à dt2 de s'ouvrir et de se fermer si rapidement que l'utilisateur ne saura pas que cela s'est produit :
query<<RUN></RUN>
Notez que j'ai également supprimé l'instruction "Ajouter à la première table" de la fonction de concaténation.Cela créera une table séparée et laissera dt1 intact.Cela coïnciderait avec la solution de contournement suggérée (bonne idée, d'ailleurs !).Il existe probablement un moyen simple de vérifier chaque ligne des deux tables et d'ajouter uniquement les lignes uniques à dt2, mais je n'y pense pas.Peut-être que quelqu'un d'autre a une suggestion ?
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesOui, cela fait l'affaire, il est ajouté. Il reste encore deux problèmes :
1) Un problème mineur est que la table dt2 apparaît toujours séparément, ce qui n'est pas nécessaire.
J'ai essayé d'éviter cela en modifiant le script comme suit, mais le résultat est le même :
queryname << Run( onruncomplete( dt1 << Concatenate( dt2 = queryResult, Append to first table ) ) );
au lieu de
queryname << Run(
onruncomplete(
dt2 = queryResult;
dt1 << Concatenate( dt2, Append to first table );
)
);
2) Un problème plus important est que lorsque le script est exécuté une deuxième fois, les mêmes données sont à nouveau ajoutées à la fin de dt1. J'ai besoin d'une sorte de règle qui importe uniquement les nouvelles données. Je ne sais pas si cela peut être fait dans la partie Concaténer du script.
S'il n'y a pas de solution de contournement pour cela, en tant que plan B, nous pouvons également essayer de modifier le script de telle sorte qu'il crache la table ajoutée (dt1 + dt2) en tant que table séparée. De cette façon, le dt1 peut toujours être utilisé comme base pour les futures mises à jour des données.
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesRe-bonjour,
OK, je pense que j'ai une solution. Comme vous pouvez le voir dans le script ci-dessous, j'ai ajouté la fonction Concatenate à l'intérieur du message "onruncomplete".Si ceci est enregistré en tant que script de table dans dt1, cela devrait fonctionner.S'il vous plaît, essayez-le et faites-le-moi savoir.
dt1=Current Data Table();
query=New SQLQuery (...
);
query<<RUN></RUN>
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesSalut Hadley,
Je pense que nous sommes proches...
Je pense que j'ai tout exécuté comme vous l'avez suggéré, mais lorsque j'ouvre simplement le dt1 et que j'exécute le script à partir de là, je reçois ce message d'alerte JMP :
Nom non résolu : dt2 dans l'accès ou l'évaluation de 'dt2', dt2/*###*/
Peu de temps après, la table de données dt2 apparaît. Mais ce n'est pas ajouté à dt1.
Fait intéressant, lorsque je ferme ce dt2 et que j'essaie d'exécuter à nouveau le script à partir de dt1, je ne reçois plus le message d'alerte JMP, mais maintenant la fenêtre Concatenate apparaît, et peu de temps après, le dt2 réapparaît. Pourtant, dt2 n'est pas ajouté à dt1.
Salutations
Gars
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesSalut,
Je pense que nous pouvons probablement simplifier cela de la manière suivante : nous appellerons dt1 la table qui a été enregistrée sur notre bureau et dt2 la nouvelle table que nous souhaitons mettre à jour à partir de notre base de données.Nous allons créer un nouveau script de table pour la table dt1 qui crée une requête pour dt2, puis concatène dt1 et dt2 ensemble, en ajoutant les résultats à dt1.
dt1=Current data table();<BR /><BR />queryname=New SQL Query(...<BR />...);<BR /><BR /><SPAN>queryname<<RUN></RUN><BR />dt1<<CONCATENATE><BR /></CONCATENATE></SPAN>
Pour répondre à votre première question, vous pouvez obtenir le script Nouvelle requête SQL à partir de dt2 en exécutant la requête, puis en cliquant avec le bouton droit sur le script source, en enregistrant le résultat dans votre presse-papiers, puis en le collant dans une nouvelle fenêtre de script.Vous pouvez ensuite utiliser la fenêtre pour travailler sur le script avant de l'enregistrer dans un script de nouvelle table dans dt1.
Est-ce utile ?
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesSalut Hadley,
Je ne comprends pas encore toutes les étapes.
1) exécutez la requête et enregistrez le script source, en donnant un nouveau nom à la requête : queryname = New SQL Query(...)<
=> avec "enregistrer le script source", tu veux dire que je dois juste EDITER la requête existante dans ma table et l'y enregistrer ? Ou l'ajouter en tant que NOUVEAU script à ma table ? Ou enregistrer ce nouveau script ailleurs ?
4) utilisez la référence à dt avec une fonction "Concaténer" avec l'autre table.
=> cela nécessite plus de précisions, j'en ai bien peur
Merci d'avance Hadley!
Gars
Re : Comment ajouter une table de données héritée avec de nouvelles données du script de base de donnéesSalut mec,
Lors de l'exécution de la requête SQL (New SQL Query(...)), vous pouvez obtenir une référence à la table de données par la méthode suivante :
1)exécutez la requête et enregistrez le script source, en donnant un nouveau nom à la requête : queryname = New SQL Query(...)<
2) Supprimez la partie <
3) Ajoutez une ligne de script ci-dessous : queryname<
4) utilisez la référence à dt avec une fonction "Concaténer" avec l'autre table.
S'il vous plaît, essayez ceci et faites-moi savoir si vous pouvez le faire fonctionner pour vous.