J'essaie d'enregistrer un script dans ma table de données qui recréera une table que j'ai créée précédemment. Il s'agit d'un complément assez complet qui implique l'ouverture/fermeture de plusieurs tableaux différents, la création de tableaux récapitulatifs, la jointure, la mise à jour et, au final, les seules données dont j'aurai besoin pour les rapports sont un simple tableau à 2 colonnes. J'aimerais que les utilisateurs puissent exécuter ce complément une fois, et s'ils ferment accidentellement la table résultante, ils n'auront pas à réexécuter le complément car il y aura un script enregistré sur la table d'origine qui peut recréer le tableau final et la fenêtre d'analyse.
Espérons que cela ait du sens !
Le problème que je rencontre est que la table finale est un résumé de l'une des nombreuses tables créées lors du script de complément. Donc, si j'utilise la fonction <
sum<<DELETE scripts=""></DELETE>
Ceci est un exemple d'une chose que j'ai essayée et qui n'a pas fonctionné. dt est la table d'origine dans laquelle je souhaite enregistrer ce script. sum est la table que je veux recréer dans le script.
Est-ce seulement possible???
Voici un script simple montrant une façon de le faire
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
dtSum = dt << Summary(
Group( :sex ),
Mean( :height ),
Freq( "None" ),
Weight( "None" ),
link to original data table(0)
);
Eval(
Parse(
Eval Insert( "\[dt << New Table Script("Summary Table Script", ^dtSum << get script^)]\" )
)
);
Comment enregistrer ce script dans ma table ?
J'ajouterais simplement le code pour enregistrer le tableau récapitulatif en tant qu'autre script, puis dans votre script principal, lancez simplement le script de tableau qui recrée le tableau récapitulatif.
Le tableau de résultats de mon script est essentiellement composé de 2 colonnes : "Position" et "N Rows". Cette table est un résumé d'une table qui a été créée pendant le long complément, et non un résumé des colonnes de la table principale. Je ne peux pas utiliser de scripts qui créent des tables à l'aide de données de la table actuelle (telles que résumé, pile, etc.). J'ai besoin d'une manière ou d'une autre d'enregistrer les valeurs exactes de la table de résultats dans un script que je peux enregistrer dans ma table principale. Quelque chose comme ça:
New Table( "Positions of'n-1 base'",
Add Rows( 32 ),
New Column( "Position",
Numeric,
"Nominal",
Format( "Best", 10 ),
Set Values(
[1, 2, 3, 6, 8, 9, 11, 16, 18, 21, 23, 25, 26, 27, 28, 29, 30, 31, 32,
34, 35, 36, 37, 38, 39, 40, 41, 46, 48, 63, 65, 68]
)
),
New Column( "N Rows",
Numeric,
"Continuous",
Format( "Fixed Dec", 20, 0 ),
Set Values(
[13, 52, 65, 52, 65, 65, 65, 52, 52, 65, 52, 31, 28, 23, 13, 21, 14, 17,
9, 5, 4, 56, 1, 4, 5, 3, 55, 65, 65, 52, 13, 13]
)
)
)
Mais je n'arrive pas à comprendre comment faire cela dans mon script. Je ne sais pas comment obtenir ce script ou l'enregistrer dans la table principale.
Mon plan était d'obtenir immédiatement le script lors de la première ouverture de la table de résultats et de l'enregistrer dans un nouveau script de table sur ma table principale, de cette façon si la table de résultats était fermée, elle pourrait être recréée à l'aide du script de table principale.
Est-ce que ça fait plus de sens?
Salut @aallman ,
Je suis un peu confus quant à ce exactement vous essayez de faire, mais cela ressemble un peu à quelque chose que j'ai fait auparavant, où j'avais besoin d'empiler la table de données source, puis de tabuler la table de données de sortie, mais je ne voulais pas avoir à tout re-script quand J'ai concaténé de nouvelles données à la table de données source.
Voici un exemple de code où j'ai le script Stack écrit dans la source dt.
Data Table( "Analysis" ) << Stack(
columns(
:X1,
:X2,
:X3,
:X4,
:X5,
:X6
),
Source Label Column( "Test Apparatus" ),
Stacked Data Column( "Data" )
);
Current Data Table() << Set Name( "Data Stack" ) <<
New Script(
"Fit Y by X of Data by Source",
Oneway(
Y( :Data ),
X( :Source ),
Means( 1 ),
Mean Diamonds( 1 ),
By( :Test Apparatus )
)
);
Data Table( "Data Stack" ) << New Column( "Date-Time",
"Ordinal",
Formula( :Date + :Time ),
Format( "m/d/y h:m:s" )
);
Data Table( "Data Stack" ) << Group Scripts(
"Run these after stacking",
{"Tabulate by Lot (run after stacking)",
"Tabulate by Apparatus (run after stacking)"}
);
Data Table( "Data Stack" ) << Move Script Group(
"Run these after stacking",
to last
);Et il reportera les scripts dans la table de données nouvellement empilée. J'ai également enregistré dans le dt principal les scripts groupés avec le titre "Exécutez-les après l'empilement", qui sont également transférés dans la table de données nouvellement empilée.
J'imagine que vous pourriez être en mesure d'aborder votre problème de la même manière.
Bonne chance!,
DS