Come moltiplicare l'input dell'utente per un numero costante?Tutto,
Sto cercando di moltiplicare il numero di input dell'utente per una costante. Devo utilizzare il numero finale (hoursBack) come parte di un indirizzo 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
);Ottenere l'errore di seguito -
Impossibile convertire l'argomento in un numero [o matrice] nell'accesso o nella valutazione di 'Multiply' , daysBack * /*###*/24 /*###*/
SceneggiaturaRe: Come moltiplicare l'input dell'utente per un numero costante?Gli errori nel file png allegato si riferiscono a problemi con le variabili chiamate p1 e p2. Quelle variabili non appaiono nel JSL che è stato precedentemente esaminato, quindi sto solo indovinando il problema.Presumo che p1 e p2 siano variabili numeriche, o almeno JMP pensa che lo siano.I valori numerici non possono essere utilizzati direttamente in una concatenazione.Il mio suggerimento è di racchiudere ciascuno dei riferimenti di p1 e p2 in una funzione Char(). (cioè char(p1) )
Re: Come moltiplicare l'input dell'utente per un numero costante?Mi sono reso conto che era perché stavo concatenando giorni nel link. E non posso concatenare i numeri. Ho usato variabili temporanee per convertire prima daysback in numero e il risultante moltiplicato per 24, tornando in carattere. Questo ha risolto il problema. Grazie!!
Re: Come moltiplicare l'input dell'utente per un numero costante?@txnelson Grazie. Ho provato quello che mi hai suggerito ma ricevo un errore. Ho allegato lo snapshot dell'errore
Re: Come moltiplicare l'input dell'utente per un numero costante?Il problema è che stai inserendo i tuoi giorni indietro da un campo EditText(), che restituisce una stringa di caratteri, non un valore numerico.Pertanto ha bisogno di essere convertito.Vedi il mio codice qui sotto
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: Come moltiplicare l'input dell'utente per un numero costante?num(giorni indietro)*24
ti farà superare il problema in cui daysback tiene una stringa.