Comment puis-je faire disparaître ce message d'erreur ici ?

Il apparaît lorsque je ferme la table et la fenêtre via le bouton "Fermer la fenêtre" après avoir d'abord dessiné un graphique. J'ai copié le script ci-dessous, mais pour l'exécuter, il faudrait avoir ouvert une table de données adéquate (voir exemple ci-joint). Cette table, et uniquement cette table, doit être ouverte lors de l'exécution du script. Ce script est une tentative d'avoir un petit calculateur de stabilité de bureau (très sale, raisonnablement rapide) / une aide lors de la rédaction de rapports, de l'évaluation de la durée de conservation des produits, etc. Il permet à l'utilisateur d'appliquer nos données de stabilité normalisées (où t=0 correspond à 100 % rel.) à des concentrations de départ hypothétiques de n'importe quel paramètre de qualité (dans la mesure où il est numérique) et de basculer rapidement entre les réglages et les paramètres. Je l'ai fait jusqu'ici, mais ce message d'erreur me rend fou. (Aussi, puis-je montrer cela sur la prochaine Groupe d'utilisateurs nordiques en personne : 5 octobre 2022 ?)

Delete Symbols();
Names Default To Here( 1 );
dt = Current Data Table();
dt << Clear Row States;
dt << Clear Select; // avoids accidentally including columns in colList
// alpha level for bivariate plot
alpha = 0.1;
// get lists for model selection
Batch = Associative Array( dt:Batch ) << Get Keys; // direct column reference
For( i = 1, i <= N Row( dt ), i++, // find all rel% columns
For( j = 1, j <= N Col( dt ), j++,
If( Column( j )[i] == 0,
For( k = 1, k <= N Col( dt ), k++,
If( Column( k )[i] == 100,
Column( k ) << Set Selected( 1 )
)
)
)
)
);
colList = dt << Get Selected Columns;
// length of column list box
nItems = N Items( colList );
// radio box argument
rb1_expr = Expr(
dt << Clear Row States;
one_rb = rb1 << Get Selected;
dt << Select Where( (dt:Batch == one_rb) ); // direct column reference
dt << Invert Row Selection;
dt << Hide and Exclude;
dt << Invert Row Selection );
// "draw graph" button & column list selection arguments
action_expr = Expr(
vlb << Delete; // delete existing vlb
yColAbs = Eval(
Eval Expr(
dt << New Column( one_rb || " / " || " / " || "start level = " || Char( startLevel ) || " for " || Char( yColRel ),
formula( Expr(startLevel) / Expr(100) * (As Column( Expr( yColRel ) ) ) )
)
)
);
pb << Append( // append new vlb with fresh graph
vlb = V List Box(
biv = Bivariate(
Y( yColAbs ), // is this the culprit?
X( dt:Time ), // direct column reference
Fit Line(
{Confid Curves Fit( 1 ),
Confid Curves Indiv( 1 ),
Confid Shaded Fit( 1 ),
Confid Shaded Indiv( 1 ),
Line Color( {230, 159, 0} )},
{Set α Level( 0.1 )}
),
Automatic Recalc( 1 ),
SendToReport(
// note reference to one_rb below in use for changing y axis label
Dispatch( {}, one_rb, TextEditBox, {Set Text( "QC parameter value" )} ),
Dispatch( {}, "timepoint 1", TextEditBox, {Set Text( "Time [months]" )} ),
Dispatch( {}, "Linear Fit", OutlineBox, {Close( 1 )} )
),
)
)
)
);
// model selection window with radio buttons & colum list box
nw = New Window( "Model selection",
Show Menu( 0 ),
Show Toolbars( 1 ), // to have access to cross hair
Border Box( Top( 0 ), Bottom( 20 ), Left( 20 ), Right( 10 ),
H List Box(
Panel Box( "Batch",
rb1 = Radio Box(
Eval List( Batch ),
rb1_expr
),
),
Panel Box( "QC parameter (y-axis)",
stabDat = Col List Box(
Max Selected( 1 ),
Width( 250 ),
N Lines( nItems ),
On Change(
yColRel = Column( dt, (stabDat << Get Selected) );
If( Is Empty( startLevel ),
//then
Empty(),
//else
action_expr
)
)
)
),
stabDat << Append( colList );
Panel Box( "Action",
V List Box(
H List Box (
neb = Number Edit Box( Empty(), 7, << Set Function(
startLevel = neb << Get;
If( Is Empty( yColRel ),
//then
Empty(),
//else
action_expr
) ) ),
Spacer Box( Size( 5, 0 ) ),
Text Box( "Enter start level" )
),
Spacer Box( Size( 0, 10 ) ),
Button Box( "Draw graph",
If( ( Is Empty( startLevel ) + Is Empty( yColRel )) > 0,
// then
New Window( "Message", modal,
V List Box(
Text Box( "QC parameter selection and/or start level missing!" ),
Spacer Box( size( 0, 10 ) )
)
),
// else
action_expr
)
),
Spacer Box( Size( 0, 10 ) ),
Button Box ( "Close Window",
If( !Is Empty( PF ), PF << Close Window);
nw << Close Window;
Close(dt, no save)
)
)
),
pb = Panel Box( "Model",
vlb = V List Box () // space for model graph
)
)
)
);
// making the initially selected buttons active in row selection
one_rb = rb1 << Get Selected;
dt << Select Where( (dt:Batch == one_rb) );
dt << Invert Row Selection;
dt << Hide and Exclude;
Au cas où quelqu'un aurait un problème similaire avec une application générée dans Générateur d'applications .
Pour les candidatures, le à la fermeture() la commande peut être envoyée via
(thisModuleInstance << Get Box) << on close(...)
</CODE></P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-582935" slang="en-US" mode="NONE">Re : Message d'erreur lors de la fermeture d'une application maison via le bouton ("Colonne non résolue à la ligne 1")</LINGO-SUB><LINGO-BODY id="lingo-body-582935" slang="en-US" mode="NONE"><P>Juste au cas où cela vous intéresserait, le message d'erreur a été provoqué par l'utilisation de "On Change" plutôt que "Set Function" en relation avec la Column List Box. Le script (ou au moins une version modifiée de celui posté ici) a continué à lancer des messages d'erreur lorsqu'il n'a pas quitté en utilisant le bouton "Fermer la fenêtre" mais le bouton Quitter dans le coin supérieur droit de la fenêtre. Cela s'est produit après que j'ai ajouté quelques lignes pour m'assurer que la table de données est fermée, quelle que soit la façon dont la fenêtre est fermée. Je soupçonne que le "On Change" est déclenché ... en quelque sorte ...</P><P> </P><P>Vieux</P><PRE><CODE class=" language-jsl">Panel Box( "QC parameter (y-axis)",
stabDat = Col List Box(
Max Selected( 1 ),
Width( 250 ),
N Lines( nItems ),
On Change( // not working so well for this application
yColRel = Column( dt, (stabDat << Get Selected) );
If( Is Empty( startLevel ),
//then
Empty(),
//else
action_expr
)
)
)
)
Nouveau
Panel Box( "QC parameter (y-axis)",
stabDat = Col List Box(
Max Selected( 1 ),
Width( 250 ),
N Lines( nItems ),
<< Set Function( // no more error messages
yColRel = Column( dt, (stabDat << Get Selected) );
If( Is Empty( startLevel ),
//then
Empty(),
//else
action_expr
)
)
)
)
Merci! Comme toujours, très apprécié, mais jetant toujours un message d'erreur.@jthi La solution a fonctionné cependant.
Une façon rapide et sale de gérer le problème serait de changer le paragraphe Fermer la fenêtre pour ignorer les erreurs
Button Box( "Close Window",
If( !Is Empty( PF ),
Try( PF << Close Window )
);
Try( nw << Close Window );
Try( Close( dt, no save ) );
)
Je pense que votre action_expr est déclenchée lorsque vous fermez la fenêtre, puis tout sera gâché. Je ne sais pas exactement pourquoi cela se produit, mais la Col List Box n'est pas détruite assez rapidement. En guise de solution de contournement, vous pouvez peut-être déplacer la fermeture de la table de données vers On Close () et la supprimer du bouton "Fermer la fenêtre".
Ajoutez ceci comme dernière ligne
nw << On close(Close(dt, no save));
et changez le bouton pour
Button Box("Close Window",
If(!Is Empty(PF),
PF << Close Window
);
nw << Close Window;
)