salut tout le monde
Je dois maintenant créer les onglets basés sur ma table de données (j'ai nommé dt2). Les noms des onglets sont basés sur le dt2, signifié ici : si dt2 a 10 noms de produits, donc dans mon interface, j'ai également besoin d'avoir 10 onglets basés sur les noms de produits dans dt2.
L'une de mes exigences est que je ne peux pas coder en dur le codage, car à l'avenir, je devrai peut-être ajouter le nom des produits dans dt2, de sorte que les onglets auront automatiquement le même nom avec le nombre de noms de produits dans dt2.
Alors, comment extraire les données de dt2 et les transformer en onglets ?
En fait, je ne sais pas comment écrire le code pour la tâche que j'ai besoin de terminer, j'ai essayé plusieurs fois, mais il continue à manquer d'erreurs.
Merci.
dt2

dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);
//Create Tabs based on the F D
VariabilityWindow = New Window("Variability Chart",tb = Tab Box() );
For(i =1, i <=nTabs(dt2 << get row names()), i++,
tb << insert(
dt2: F D[i] || Char(i),
V list Box(
Button Box("Variability Chart #" || Char(i)),
)
)
);Il est évident que vous avez encore du mal avec les éléments de base de JSL. Quelques pointeurs, basés sur le code que vous montrez.
1. N'inventez pas de code. Quand ça ne marche pas, c'est juste déroutant. Lorsque vous devinez que le code fonctionne, vous ne savez pas pourquoi et vous n'avez rien appris.
2. Utilisez le journal. Dans vos nombreuses discussions que vous avez énumérées, je n'ai pas vu les résultats du journal. Ces messages fournissent beaucoup de détails et d'informations sur ce qui ne va pas avec votre JSL.
3. Utilisez Aide==>Index des scripts.Il fournit la syntaxe correcte et des exemples sur le fonctionnement des éléments. Le Scripting Index est la documentation la plus complète sur JSL.
Permettez-moi de critiquer votre code
dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);
La description de la plate-forme de synthèse se trouve à :
Aide==Index des scripts==>Table de données==>Résumé

Voici un exemple presque identique à ce qu'il faut.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Summary( Group( :Age ), Mean( :Height ) );
Mais ce qui semble manquer, c'est comment créer un pointeur vers le tableau récapitulatif qui sera produit par la plate-forme récapitulative. Cependant, vous ne semblez pas comprendre comment référencer des tables de données. Dans l'exemple, la variable "dt" pointe sur la table de données ouverte. Ainsi, comme on peut le voir, il est utilisé lorsque la Summary Platform y fait référence. Cependant, vous pouvez également utiliser une fonction Data Table() pour pointer vers le nom physique d'une table de données. C'est un peu ce que je pense que vous essayez de faire, avec Data Table("Data Table............."). L'un ou l'autre fonctionnera ....... si vous connaissez le nom de la table de données. Mais comme vous le montrez dans votre code fourni, assurez-vous de spécifier une variable pour pointer vers la table de données que vous allez créer à partir de la plate-forme de résumé, afin que vous puissiez l'utiliser dans votre prochaine étape ( c'est-à-dire dt = )
La prochaine section de code semble que vous ne faisiez que deviner la syntaxe.
//Create Tabs based on the F D
VariabilityWindow = New Window("Variability Chart",tb = Tab Box() );
For(i =1, i <=nTabs(dt2 << get row names()), i++,
tb << insert(
dt2: F D[i] || Char(i),
V list Box(
Button Box("Variability Chart #" || Char(i)),
)
)
);
Ce que vous essayez de faire est de générer un nouvel onglet pour chaque valeur de FD à partir du tableau de données récapitulatif.
Une recherche dans l'index de script montre qu'il n'existe rien du nom de nTabs ou get row names(). Je suppose que vous pensiez que nTabs vous donnerait le nombre de tabls que vous voulez. Ce qu'il ne peut pas, car à ce stade du programme, aucun tableau n'a été produit, et simplement parce qu'un tableau récapitulatif a été produit, il aurait su que le nombre de lignes dans le tableau de données correspond au nombre d'onglets que vous voulez produit. Cependant, vous pouvez consulter l'index de script et voir quelles fonctions vous indiqueront le nombre de lignes qu'il y a dans une table de données "N Rows ()" et simplement changer le code composé pour N Rows () et vous aurez votre solution
Le code suivant suppose que votre table de données d'origine a une variable de pointeur appelée "dt" qui pointe vers elle.
dt2 = dt << Summary( Group( :F D ), Freq( "None" ), Weight( "None" ), invisible );
//Create Tabs based on the F D
VariabilityWindow = New Window( "Variability Chart", tb = Tab Box() );
For( i = 1, i <= nrows( dt2 ), i++,
tb << Insert(
dt2:F D[i] || Char( i ),
V List Box( Button Box( "Variability Chart #" || Char( i ) ), )
)
);
dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);