Le nouveau script de mise à jour de la table JMP 18 écrase la tableLors de l'importation de tableaux Excel dans JMP 18, j'obtiens deux scripts « Source » et « Mettre à jour le tableau », la seule différence semble être la commande « Mettre à jour le tableau (1) ».
Le deuxième script effectue une mise à jour à partir du fichier Excel et écrase toutes les colonnes créées après l'importation. Existe-t-il un moyen de lui faire laisser les nouvelles colonnes intactes lors de la mise à jour ? Je n'ai rien trouvé dans l'index des scripts.
Automatisation et scriptsOrganisation du contenuFenêtresRe: Le nouveau script de mise à jour de la table JMP 18 écrase la tablesalut @Ake , l'idée de mise à jour pour le moment : remplacer les données existantes par les nouvelles données du fichier d'entrée.
Comme vous le décrivez, c'est assez destructeur.
L'idée derrière cela pourrait être quelque chose comme :
Il n'est pas possible de garantir que les valeurs existantes dans les colonnes supplémentaires correspondent aux données nouvellement importées. Il est donc préférable de les supprimer. Hm, pour les colonnes contenant des formules, je ne vois aucune raison pour laquelle ces colonnes devraient être supprimées.
Bien meilleur que le script de mise à jour :
dt = Current Data Table();
dtnew = dt << Run Script( "Source" );
dt << Select All Rows << Delete Rows;
dt << Concatenate( dtnew, Append to first table );
Close( dtnew, NoSave );
Il supprimera toujours les valeurs ajoutées manuellement, mais il conserve les colonnes de formules : )
L'inconvénient : il s'appuie sur le script source - qui est également très fragile : Update & Concatenate: source script collision .
Alternativement, vous pouvez jeter un œil à Join, Concat et Update .
Re: Le nouveau script de mise à jour de la table JMP 18 écrase la tableMerci ! Si je copie simplement le script source dans votre script, il devient moins fragile.
J'ai utilisé une méthode plus compliquée, en ajoutant le nombre requis de lignes, puis en effectuant la mise à jour. Votre script est plus propre.
// Compare and add number of rows if needed
nrows1 = N Rows( dt1 );
nrows2 = N Rows( dt2 );
If( nrows2 < nrows1,
dt2 << Add Rows( nrows1 - nrows2 )
);
// Update dt2
Data Table( dt2 ) << Update( With( Data Table( dt1 ) ) );
Close( dt1 );
dt2 << save();
Re: JMP 18 nouveau script de mise à jour de table écrase la tableLe danger de ce script : il est hérité via concaténation :
L'utilisateur A importe un fichier Excel
utilisateur B : concatène 2 fichiers
L'utilisateur C s'interroge sur les données manquantes et tente de mettre à jour le tableau.
à partir du script « Mise à jour de la table » désactivé ?
Veuillez voter ici : Option permettant de désactiver la création du script « Mise à jour de la table ».
Re: JMP 18 nouveau script de mise à jour de table écrase la tableBonjour, j'apprécie beaucoup cette solution. J'ai cependant une question : lorsque je mets à jour une table avec ce script, un script de mise à jour générique est automatiquement ajouté, ce qui peut perturber les colonnes de formules. Existe-t-il un moyen de désactiver la génération automatique de ce nouveau script « mise à jour de table » ajouté à la table JMP ?
Re: JMP 18 nouveau script de mise à jour de table écrase la tableVous pouvez éviter ce problème en supprimant ou en remplaçant le script « Mise à jour de la table » dans le script. Voici une méthode, si votre script personnalisé « Mise à jour de la table » s'appelle « Mise à jour de la table ».
dt = Current Data Table();
update_script = dt << Get Script( "Update Table" );
dt << Delete Scripts( {"Update Table"} );
dtnew = dt << Run Script( "Source" );
dt << Select All Rows << Delete Rows;
dt << Concatenate( dtnew, Append to first table );
Close( dtnew, NoSave );
Eval(
Substitute(
Expr(
dt << Set Property( "Update Table", __update_script__ )
),
Expr( __update_script__ ), Name Expr( update_script )
)
);
Ou vous pouvez nommer votre script autrement (« Mise à jour ») et simplement inclure une ligne qui supprime « Mise à jour de la table » après la mise à jour.
dt = Current Data Table();
dtnew = dt << Run Script( "Source" );
dt << Select All Rows << Delete Rows;
dt << Concatenate( dtnew, Append to first table );
Close( dtnew, NoSave );
dt << Delete Scripts( {"Update Table"} );