cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Register for our Discovery Summit 2024 conference, Oct. 21-24, where you’ll learn, connect, and be inspired.
Choose Language Hide Translation Bar
Voizingu
Level III

[JSL] Save New Window () as script in a data table

Hello,

 

I would like to save a small report generated as New Window () as script into the data table, after concatenation, so I can generate it later from the datable directly.

 

Voizingu_0-1727422912196.png

 

I am trying the function << get script and << new script but it doesn't work, the generated script fails.

could you please help me?

thanks 

 

- voiz

 

dt = New Table( "datatable_test5",
	Add Rows( 7 ),
	New Column( "SerialNumber",
		Character( 20 ),
		"Nominal",
		Set Values(
			{"DN802111YSKQ45752507", "DN802111YSKQ45752507",
			"DN802111YSKQ45752507", "DN802111YSQQ4575X379",
			"DN802111YSQQ4575X379", "DN802111YSQQ4575X379",
			"DN802111YUAQ45755340"}
		),
		Set Display Width( 233 )
	),
	New Column( "stored_at",
		Numeric,
		"Continuous",
		Format( "y/m/d h:m:s", 22, 0 ),
		Input Format( "y/m/d h:m:s", 0 ),
		Set Values(
			[3806904000, 3806990820, 3806904780, 3806905200, 3806992020,
			3806906400, 3806906820]
		),
		Set Display Width( 169 )
	),
	New Column( "Version",
		Character( 9 ),
		"Nominal",
		Set Values(
			{"Version 3", "Version 1", "Version 2", "Version 5",
			"Version 4", "Version 2", "Version 3"}
		),
		Set Display Width( 100 )
	),
	New Column( "Metric1",
		Numeric,
		"Continuous",
		Format( "Best", 10 ),
		Set Property(
			"Spec Limits",
			{LSL( 0 ), USL( 40 ), Show Limits( 1 )}
		),
		Set Values(
			[16.197252, 6.39561587, 6.5805566, 6.1837729, 16.3159215,
			12.7256798, 9.83716952]
		),
		Set Display Width( 110 )
	)
);

oldlastrecord= format(Col Maximum(dt:stored_at), "y/m/d h:m:s");
Newlastrecord= format(today(), "y/m/d h:m:s");
Ndata = Nrows(dt);

ReportMsg = New Window( "Station ---",
	//<<modal(),
	Outline Box( "Data Pull Report",
		Table Box(
			String Col Box( "Previous Last record", oldlastrecord ),
			String Col Box( "New Last record", newlastrecord ),
			Number Col Box( "# new rows", Ndata )
		)
	)
);

ReportScript = ReportMsg << get script;

show(ReportScript); // <-- the format of the script (see log) is very different from ReportMsg above

//Attempt at saving the script <--- fail
//Eval( Eval Expr( dt << New Script( "Data Pull Report", Expr( ReportScript )) ));

the log generates the following 

ReportScript =

V List Box(

V List Box(

OutlineBox(

TableBox(

StringColBox("2024/08/20 9:47:00 AM"),

StringColBox("2024/09/27 12:41:40 AM"),

NumberColBox(Set Format("Best", 7), Array(7)

)))));

 

1 REPLY 1
jthi
Super User

Re: [JSL] Save New Window () as script in a data table

I would say that generally it is easiest to just build the new window as expression and add that to table script. This method will always work but sometimes it will require some extra work (or most of the time)

Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Big Class.jmp");

oldlastrecord = {"abc"};
newlastrecord = {"ABC"};
Ndata = [123];

report_expr = Eval Expr(
	ReportMsg = New Window("Station ---", 
		//<<modal(),
		Outline Box("Data Pull Report",
			Table Box(
				String Col Box("Previous Last record", Expr(oldlastrecord)),
				String Col Box("New Last record", Expr(newlastrecord)),
				Number Col Box("# new rows", Expr(Ndata))
			)
		)
	)
);

Eval(EvalExpr(
	dt << New Script("My Report", Expr(NameExpr(report_expr)));
));

-Jarmo