Hallo alle
Ich muss jetzt die Registerkarten erstellen, die auf meiner Datentabelle basieren (ich habe sie als dt2 bezeichnet). Die Namen der Registerkarten basieren auf dem dt2, gemeint ist hier: Wenn dt2 10 Produktnamen hat, brauche ich in meiner Schnittstelle auch 10 Registerkarten, die auf den Produktnamen in dt2 basieren.
Eine meiner Anforderungen ist, dass ich die Codierung nicht fest codieren kann, da ich in Zukunft vielleicht den Namen der Produkte in dt2 hinzufügen muss, damit die Registerkarten automatisch mit der Anzahl der Produktnamen in dt2 identisch sind.
Wie kann man also die Daten von dt2 abrufen und als Registerkarten erstellen?
Eigentlich weiß ich nicht, wie ich den Code für die Aufgabe schreiben soll, die ich vervollständigen muss, ich habe es viele Male versucht, aber es laufen keine Fehler mehr.
Vielen Dank.
dt2

dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);
//Create Tabs based on the F D
VariabilityWindow = New Window("Variability Chart",tb = Tab Box() );
For(i =1, i <=nTabs(dt2 << get row names()), i++,
tb << insert(
dt2: F D[i] || Char(i),
V list Box(
Button Box("Variability Chart #" || Char(i)),
)
)
);Es ist offensichtlich, dass Sie immer noch mit den grundlegenden Teilen von JSL zu kämpfen haben. Ein paar Hinweise, basierend auf dem Code, den Sie zeigen.
1. Erfinden Sie keinen Code. Wenn es nicht funktioniert, ist es nur verwirrend. Wenn das Erraten von Code funktioniert, wissen Sie nicht warum, und Sie haben nichts gelernt.
2. Verwenden Sie das Protokoll. In Ihren vielen Diskussionen, die Sie aufgelistet haben, habe ich keine Ergebnisse aus dem Protokoll gesehen. Diese Meldungen bieten viele Details und Einblicke in das, was mit Ihrer JSL schief läuft.
3. Verwenden Hilfe==>Scripting-Index.Es enthält die korrekte Syntax und Beispiele zur Funktionsweise der Elemente. Der Scripting Index ist die umfassendste Dokumentation zu JSL.
Lassen Sie mich Ihren Code kritisieren
dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);
Die Beschreibung der Summary Platform finden Sie unter:
Hilfe==Scripting Index==>Datentabelle==>Zusammenfassung

Hier ist ein Beispiel, das fast identisch mit dem ist, was benötigt wird.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Summary( Group( :Age ), Mean( :Height ) );
Was jedoch zu fehlen scheint, ist die Erstellung eines Zeigers auf die Übersichtstabelle, die von der Übersichtsplattform erstellt wird. Sie scheinen jedoch nicht zu verstehen, wie auf Datentabellen verwiesen wird. Im Beispiel zeigt die Variable „dt“ auf die geöffnete Datentabelle. Wie man sieht, wird es verwendet, wenn die Summary Platform darauf verweist. Sie können jedoch auch eine Data Table()-Funktion verwenden, um auf den physischen Namen einer Datentabelle zu verweisen. Was Sie meiner Meinung nach mit Data Table ("Data Table............") versuchen. Entweder man funktioniert .... wenn Sie den Namen der Datentabelle kennen. Aber wie Sie in Ihrem bereitgestellten Code zeigen, stellen Sie sicher, dass Sie eine Variable angeben, die auf die Datentabelle zeigt, die Sie von der Summary Platform erstellen, damit Sie sie in Ihrem nächsten Schritt verwenden können (dh dt = ).
Der nächste Codeabschnitt scheint, dass Sie die Syntax nur erraten haben.
//Create Tabs based on the F D
VariabilityWindow = New Window("Variability Chart",tb = Tab Box() );
For(i =1, i <=nTabs(dt2 << get row names()), i++,
tb << insert(
dt2: F D[i] || Char(i),
V list Box(
Button Box("Variability Chart #" || Char(i)),
)
)
);
Sie versuchen, eine neue Registerkarte für jeden Wert von FD aus der Übersichtsdatentabelle zu generieren.
Eine Suche im Scripting Index zeigt, dass nichts mit dem Namen nTabs oder get row names() existiert. Ich nehme an, Sie dachten, dass nTabs Ihnen die gewünschte Anzahl von Tabs geben würde. Was es nicht kann, da zu diesem Zeitpunkt im Programm noch keine Tabellen erstellt wurden und nur weil eine Übersichtstabelle erstellt wurde, hätte es die Idee gehabt, dass die Anzahl der Zeilen in der Datentabelle die Anzahl der gewünschten Registerkarten ist Produkt. Sie können jedoch in den Skriptindex schauen und sehen, welche Funktionen Ihnen die Anzahl der Zeilen in einer Datentabelle "N Rows()" mitteilen, und einfach den erfundenen Code für N Rows() ändern, und Sie haben Ihre Lösung
Der folgende Code geht davon aus, dass Ihre ursprüngliche Datentabelle eine Zeigervariable namens "dt" hat, die darauf zeigt.
dt2 = dt << Summary( Group( :F D ), Freq( "None" ), Weight( "None" ), invisible );
//Create Tabs based on the F D
VariabilityWindow = New Window( "Variability Chart", tb = Tab Box() );
For( i = 1, i <= nrows( dt2 ), i++,
tb << Insert(
dt2:F D[i] || Char( i ),
V List Box( Button Box( "Variability Chart #" || Char( i ) ), )
)
);
dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);