Comment multiplier l'entrée de l'utilisateur par un nombre constant ?Tous,
J'essaie de multiplier le nombre d'entrées utilisateur par une constante. J'ai besoin d'utiliser le nombre final (hoursBack) dans le cadre d'une adresse Web.
local(
{Name= "ABCD", daysBack = "7", formError = 1, rv},
While( formError > 0,
formError = 0;
rv = Dialog(
Title( "Select Extract criteria" ),
VList(
HList( "Name:", Name= EditText( Name) ),
HList( "Days Back", daysBack = EditText( daysBack ) ),
HList( Button( "OK" ), Button( "Cancel" ) )
)
);
If( rv["button"] < 0,
Throw( "Bye!" )
);
Name= rv["Name"];
If( Name== "",
formError
++);
daysBack = rv["daysBack"];
If( daysBack == "",
formError
++);
If( formError > 0,
Dialog( "Missing required form input values" )
);
);
Write( "Name=" || Name);
hoursBack = daysBack*24; //Getting an error here
Status Msg( "Extracting data for " || Name);
dt = queryData( "Newtable", hoursBack, Name); //Query data function is defined in a different part of the code
);Obtenir l'erreur ci-dessous -
Impossible de convertir l'argument en nombre [ou matrice] lors de l'accès ou de l'évaluation de 'Multiplier' , daysBack * /*###*/24 /*###*/
ScriptRe : Comment multiplier l'entrée de l'utilisateur par un nombre constant ?Les erreurs dans votre fichier png joint font référence à des problèmes avec des variables appelées p1 et p2. Ces variables n'apparaissent pas dans le JSL qui a été examiné précédemment, donc je ne fais que deviner le problème.Je suppose que p1 et p2 sont des variables numériques, ou du moins JMP pense qu'elles le sont.Les valeurs numériques ne peuvent pas être utilisées directement dans une concaténation.Ma suggestion est que vous incluiez chacune des références de p1 et p2 dans une fonction Char(). (c'est-à-dire char(p1) )
Re : Comment multiplier l'entrée de l'utilisateur par un nombre constant ?J'ai réalisé que c'était parce que je concaténais daysBack dans le lien. Et je ne peux pas concaténer des nombres. J'ai utilisé des variables temporaires pour convertir les jours en nombre en premier et le résultat multiplié par 24, en retour au caractère. Cela a résolu le problème. Merci!!
Re : Comment multiplier l'entrée de l'utilisateur par un nombre constant ?@txnelson Merci. J'ai essayé ce que vous suggérez mais j'obtiens une erreur. J'ai joint l'instantané de l'erreur
Re : Comment multiplier l'entrée de l'utilisateur par un nombre constant ?Le problème est que vous saisissez vos daysBack à partir d'un champ EditText(), qui renvoie une chaîne de caractères et non une valeur numérique.Il doit donc être converti.Voir mon code ci-dessous
local(
{Name= "ABCD", daysBack = "7", formError = 1, rv},
While( formError > 0,
formError = 0;
rv = Dialog(
Title( "Select Extract criteria" ),
VList(
HList( "Name:", Name= EditText( Name) ),
HList( "Days Back", daysBack = EditText( daysBack ) ),
HList( Button( "OK" ), Button( "Cancel" ) )
)
);
If( rv["button"] < 0,
Throw( "Bye!" )
);
Name= rv["Name"];
If( Name== "",
formError
++);
daysBack = num(rv["daysBack"]);show(daysback);
If( daysBack == "",
formError
++);
If( formError > 0,
Dialog( "Missing required form input values" )
);
);
Write( "Name=" || Name);
hoursBack = daysBack*24;
show("xx",hoursback) ; //Getting an error here
Status Msg( "Extracting data for " || char(Name));
dt = queryData( "Newtable", hoursBack, Name); //Query data function is defined in a different part of the code
);Re : Comment multiplier l'entrée de l'utilisateur par un nombre constant ?num(jours arrière)*24
vous permettra de résoudre le problème où daysback contient une chaîne.