Ich muss monatlich Leistungsberichte erstellen, und der interne Kunde ist vom Capability Explorer vom Marketplace begeistert – und warum auch nicht, er ist wirklich gut. Mein Problem ist, dass ich 60 einzelne Berichte zusammenstellen muss (es ergibt einen pro Spalte). Also habe ich dieses JSL geschrieben (gehackt), das ausgewählte Berichte in einem Journal sammelt, das ich als PDF exportieren konnte. Es hat alles gut funktioniert (abgesehen von der Option zum automatischen Schließen von Fenstern – die habe ich aufgegeben), schlägt aber seit dem Update auf Version 19 fehl. Der Fehler (zumindest der erste Fehler!) ist
Erwartetes Plattformargument beim Zugriff oder bei der Auswertung von „Bericht“, Ungültiges Argument (w), Bericht/*###*/(w)
in Zeile 92 in pathGoesHere\Chooser und PDF-Export v2.jsl
Ich wäre für Hilfe oder Hinweise wirklich dankbar.
// ===== BEGIN: Select windows and export a single combined PDF (with headers/footers & page breaks) =====
Names Default To Here( 1 );
// -------------------- User Controls --------------------
allowCloseDataTables = 1; // 0 = keep Data Table windows open (safe), 1 = allow closing them
forceCloseNoPrompt = 0; // 1 = Close(..., No Save) for hands‑free; 0 = allow Save prompts (may block)
// -------------------- Summary Counters --------------------
closedCount = 0;
attemptedCount = 0;
failedCount = 0;
skippedDTCount = 0;
skippedJournalCount = 0;
// -------------------- 1) Collect open windows (JMP 18 reliable) --------------------
winRefs = Get Window List(); // list of top-level window handles
winTitles = {};
// Build clean titles for the list (characters only)
For( i = 1, i <= N Items( winRefs ), i++,
w = winRefs[i];
t = "Window " || Char( i );
Try(
t0 = w << Get Window Title;
t = Char( t0 );
If( Is Empty( t ), t = "Window " || Char( i ) );
);
Insert Into( winTitles, t );
);
// -------------------- 2) Dialog: pick windows + optional "close after export" --------------------
selIdx = {};
closeAfter = 0;
New Window( "Select windows to include", <
<MODAL>
0; ), Spacer Box( Size( 12, 0 ) ), Button Box( "Cancel", selIdx = {}; closeAfter = 0; ) ) ) ); If( N Items( selIdx ) == 0, Throw( "No windows selected." ) ); // -------------------- 3) Build a list of Data Table windows (no probing on random windows) -------------------- dtWinRefs = {}; nt = N Table(); For( i = 1, i <= nt, i++, dt = Data Table( i ); Try( dtw = dt << Get Window; // window that hosts this Data Table If( !Is Empty( dtw ), Insert Into( dtWinRefs, dtw ); ); ); ); // -------------------- 4) Build the combined journal with static content -------------------- jnw = New Window( "Combined Report", <
<JOURNAL></JOURNAL></MODAL>
Scheinbar hat JMP19 geändert, was passiert, wenn Sie versuchen, die Berichtsfunktion in einem neuen Fenster zu verwenden: In JMP18 wird ein fehlender Wert zurückgegeben und in JMP19 wird ein Fehler ausgegeben, den Sie sehen. Es gibt viele Möglichkeiten, aber vielleicht reicht so etwas: Fügen Sie Try() zu Ihrer Zeile 92 hinzu
Original:

Geändert
rb = Try(Report(w), .);
content = Picture Box(w << Get Picture);
If(!Is Empty(rb),
Try(content = rb << Clone Box); // upgrade to cloned report if possible
);
Vielen Dank dafür – ich lerne immer noch, mich mit JSL vertraut zu machen – Try() ist ein ganz neues Konzept für mich.