Our World Statistics Day conversations have been a great reminder of how much statistics can inform our lives. Do you have an example of how statistics has made a difference in your life? Share your story with the Community!
Choose Language Hide Translation Bar
Highlighted
shilpa
Level II

How to multiply user input by a constant number?

All,

 

I'm trying to multiply user input number by a constant. I need to use the final number (hoursBack) as a part of a web address. 

 

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
		);

Getting the below error - 

 

Cannot convert argument to a number [or matrix] in access or evaluation of 'Multiply' , daysBack * /*###*/24 /*###*/

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
shilpa
Level II

Re: How to multiply user input by a constant number?

I realized that it was because I was concatenating daysBack in the link. And I cannot concatenate numbers. I used temporary variables to convert daysback to number first and the resultant multiplied by 24, back to character. This resolved the issue. Thanks!!

View solution in original post

5 REPLIES 5
Highlighted
Craige_Hales
Staff (Retired)

Re: How to multiply user input by a constant number?

num(daysback)*24

will get you past the problem where daysback holds a string.

Craige
Highlighted
txnelson
Super User

Re: How to multiply user input by a constant number?

The issue is that you are inputting your daysBack from an EditText() field, which returns a character string, not a numeric value.  Therefore it needs to be converted.  See my code below

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
		);
Jim
Highlighted
shilpa
Level II

Re: How to multiply user input by a constant number?

@txnelson Thank you. I tried what you suggested but am getting an error. I have attached the snapshot of the error

 

 
 

 

Highlighted
shilpa
Level II

Re: How to multiply user input by a constant number?

I realized that it was because I was concatenating daysBack in the link. And I cannot concatenate numbers. I used temporary variables to convert daysback to number first and the resultant multiplied by 24, back to character. This resolved the issue. Thanks!!

View solution in original post

Highlighted
txnelson
Super User

Re: How to multiply user input by a constant number?

The errors in your attached png file are referring to issues with variables called p1 & p2.  Those variables do not appear in the JSL that was previously examined, so I am only guessing as to the issue.  It is my assumption that p1 and p2 are numeric variables, or at least JMP thinks they are.  Numeric values cannot be directly used in a concatenation.  My suggestion is that you enclose each of the references of p1 and p2 in a Char() function. (i.e.  char(p1) )

Jim
Article Labels