Erkennung von Änderungen in einem lokalen Datenfilter<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Unten sehen Sie ein Skript, das einen Datenfilter verwendet, der bei seiner Änderung den Zeilenstatus-Handler auslöst und das Diagramm aktualisiert.Ich möchte unbedingt einen lokalen Filter verwenden, konnte aber nicht herausfinden, wie ich die Änderung im lokalen Filter erkennen kann.Wie erkennt man eine Änderung im lokalen Datenfilter?
Namen standardmäßig hier ( 1 ) ;
dt = Offen ( „$SAMPLE_DATA\semiconductor Capability.jmp“ ) ;
F = Funktion ( { A } ,
// Erfassen Sie die LCL und UCL aus dem Übersichtsfeld „Limitzusammenfassungen“ in der Berichtsausgabe
myLCL = ( Bericht ( ccb )[ „NPN1-Grenzwertzusammenfassungen“ ][ Tischbox ( 1 )][ 2 ] << erhalten )[ 1 ] ;
myUCL = ( Bericht ( ccb )[ „NPN1-Grenzwertzusammenfassungen“ ][ Tischbox ( 1 )][ 4 ] << erhalten )[ 1 ] ;
// Wenden Sie die neuen Achseneinstellungen wieder auf das Kontrolldiagramm an
Bericht ( ccb )[ Achsenbox ( 3 )] << Mindest ( myLCL ) ;
Bericht ( ccb )[ Achsenbox ( 3 )] << Max ( myUCL ) ;
) ;
rs = dt << Machen Sie einen Rowstate-Handler ( F ) ;
Neues Fenster ( „Arbeitsbeispiel“ ,
Kontextfeld „Datenfilter“. (
H-Listenfeld (
dt << Datenfilter ( Filter hinzufügen ( Säulen ( : WEBSITE ) ) , Modus ( wählen ( 1 ) , zeigen ( 1 ) , enthalten ( 1 )) ) ,
Plattform ( dt ,
ccb = Regelkarten-Generator (
Größe ( 534 , 453 ) ,
Systemsteuerung anzeigen ( 0 ) ,
Variablen ( Y ( : NPN1 ) ) ,
Diagramm ( Position ( 1 ) , Grenzen ) ,
Diagramm ( Position ( 2 ) ) ,
SendToReport (
Versenden (
{} ,
„NPN1“ ,
ScaleBox ,
{ Mindest ( 96.6346153846154 ) , Max ( 131.634615384615 ) , Inc ( 5 ) , Kleinere Zecken ( 0 ) ,
Referenzlinie hinzufügen ( 104.412948990151 , "Solide" , "Blau" , „LSL“ , 1 ) ,
Referenzlinie hinzufügen ( 131.893493064355 , "Solide" , "Blau" , „USL“ , 1 ) ,
Referenzlinie hinzufügen ( 118.153221027253 , "Solide" , "Blau" , "Ziel" , 1 )}
)
)
)
)
)
)
) ;
Gesendet von Post für Windows 10
Betreff: Erkennung von Änderungen in einem lokalen DatenfilterMit
rs = xx << Make Filter State Handler( dosomethingwithselection );
anstatt
xx << MakeRowStateHandler( dosomethingwithselection );
es wird klappen.
Bitte beachten Sie, dass es wichtig ist, den zurückgegebenen Filter State Handler in einem JSL-Symbol zu speichern: rs =
<STRIKE>rs =</STRIKE> xx << Make Filter State Handler( dosomethingwithselection );
(ohne rs = ) wird nicht funktionieren: Filteränderungshandler
Betreff: Erkennung von Änderungen in einem lokalen DatenfilterIch beantworte deine Frage nicht direkt, Jim. Aber FWIW, ich habe „MakeRowStateHandler“ nicht in der Liste der Meldungen für das lokale Datenfilterobjekt gesehen.
Betreff: Erkennung von Änderungen in einem lokalen DatenfilterIan,
Dein Beispiel hat super funktioniert.Ich habe noch einmal im Skriptindex nach einer Dokumentation dazu gesucht und nur den obskuren Hinweis darauf gefunden, dass ein „Mark Row State Handler“ bei einem Datentabellenfilter funktioniert.Also dachte ich mir, dass es funktionieren und ein noch direkterer Code sein sollte, wenn ich es so einrichte, dass es direkt auf den Filter und nicht auf das Umrissfeld des Filters zeigen kann.Aber das hat nicht funktioniert.Haben Sie eine Ahnung, warum das nicht funktioniert?Wenn ich das Skript ausführe, weiß es, dass das Handle „xx“ auf einen Datenfilter verweist.
Namen standardmäßig hier ( 1 ) ;
// Daten
dt = Neuer Tisch ( „Früchte“ ,
Zeilen hinzufügen( 3 ) ,
Neue Spalte ( "Obst" ,
Charakter ,
„Nominal“ ,
Werte festlegen( { "Birne" , "Apfel" , "Orange" } )
)
) ;
// Ein Bericht mit einem lokalen Datenfilter
GB = dt << Graph Builder (
Größe( 528 , 448 ) ,
Systemsteuerung anzeigen( 0 ) ,
Legende anzeigen( 0 ) ,
Variablen( X( : Obst ) ) ,
Elemente( Bar( X , Legende( 3 ) ) )
) ;
xx = GB << Lokaler Datenfilter (Modus , Filter hinzufügen( Spalten( : Obst ) ) ) ;
// Zeilenstatus-Handlerfunktion
doSomethingWithSelection = Funktion ( {X} ,
{Standardlokal},
Piep () ;
Warten ( 0,1 ) ;
Piep () ;
) ;
// Einen Verweis auf den Bericht abrufen
gbReport = GB << Bericht;
// Sehen Sie, welche Meldungen das Datenfilter-Anzeigefeld versteht (druckt es ins Protokoll)
Eigenschaften anzeigen ( gbReport[ Gliederungsfeld ( 1 )] ) ;
// Weisen Sie den Zeilenstatus-Handler dem Anzeigefeld des lokalen Datenfilters zu
xx << MakeRowStateHandler (dosomethingwithselection) ;
//rsh = gbReport[OutlineBox(1)] << MakeRowStateHandler(dosomethingwithselection);
Betreff: Erkennung von Änderungen in einem lokalen DatenfilterVielleicht könnten Sie versuchen, den Zeilenstatus-Handler zum lokalen Datenfilter hinzuzufügen? Zum Beispiel:
NamesDefaultToHere ( 1 ) ;
// Daten
dt = Neuer Tisch ( „Früchte“ ,
Zeilen hinzufügen ( 3 ) ,
Neue Spalte ( "Obst" ,
Charakter ,
„Nominal“ ,
Werte festlegen ( { "Birne" , "Apfel" , "Orange" } )
)
) ;
// Ein Bericht mit einem lokalen Datenfilter
GB = dt << Graph Builder (
Größe ( 528 , 448 ) ,
Systemsteuerung anzeigen ( 0 ) ,
Legende anzeigen ( 0 ) ,
Variablen ( X ( : Obst ) ) ,
Elemente ( Bar ( X , Legende ( 3 ) ) ) ,
Lokaler Datenfilter ( Modus , Filter hinzufügen ( Säulen ( : Obst ) ) )
) ;
// Zeilenstatus-Handlerfunktion
doSomethingWithSelection = Funktion ({ X } , { Standardmäßig lokal } , Piep () ; Warten ( 0,1 ) ; Piep () ) ;
// Einen Verweis auf den Bericht abrufen
gbReport = GB << Bericht ;
// Sehen Sie, welche Meldungen das Datenfilter-Anzeigefeld versteht (druckt es ins Protokoll)
Eigenschaften anzeigen ( gbReport [ OutlineBox ( 1 )]) ;
// Weisen Sie den Zeilenstatus-Handler dem Anzeigefeld des lokalen Datenfilters zu
rsh = gbReport [ OutlineBox ( 1 )] << MakeRowStateHandler ( doSomethingWithSelection ) ;
Betreff: Erkennung von Änderungen in einem lokalen DatenfilterIch hatte gehofft, dass es eine direktere Überwachung eines lokalen Filters gäbe.Vielleicht wird 14.0 einen solchen Monitor haben . Danke für den Code.
Betreff: Erkennung von Änderungen in einem lokalen DatenfilterMir fällt keine integrierte Unterstützung für die Überwachung eines lokalen Datenfilters per Skript ein.
Unten finden Sie einen Hack, der einfach im Hintergrund ausgeführt wird, um Filteränderungen durch den Benutzer zu finden.
Namen standardmäßig hier ( 1 ) ;
dt = Offen ( „$SAMPLE_DATA\semiconductor Capability.jmp“ ) ;
F = Funktion ( { ccb } ,
// Erfassen Sie die LCL und UCL aus dem Übersichtsfeld „Limitzusammenfassungen“ in der Berichtsausgabe
myLCL = ( Bericht ( ccb )[ „NPN1-Grenzwertzusammenfassungen“ ][ Tischbox ( 1 )][ 2 ] << erhalten )[ 1 ] ;
myUCL = ( Bericht ( ccb )[ „NPN1-Grenzwertzusammenfassungen“ ][ Tischbox ( 1 )][ 4 ] << erhalten )[ 1 ] ;
// Wenden Sie die neuen Achseneinstellungen wieder auf das Kontrolldiagramm an
Bericht ( ccb )[ Achsenbox ( 3 )] << Mindest ( myLCL ) ;
Bericht ( ccb )[ Achsenbox ( 3 )] << Max ( myUCL ) ;
) ;
jetzt = Neues Fenster ( „Arbeitsbeispiel“ ,
Kontextfeld „Datenfilter“. (
H-Listenfeld (
ldf = dt << Datenfilter ( lokal , Filter hinzufügen ( Säulen ( : WEBSITE ) ) , Modus ( wählen ( 1 ) , zeigen ( 1 ) , enthalten ( 1 )) ) ,
Plattform ( dt ,
ccb = Regelkarten-Generator (
Größe ( 534 , 453 ) ,
Systemsteuerung anzeigen ( 1 ) ,
Variablen ( Y ( : NPN1 ) ) ,
Diagramm ( Position ( 1 ) , Grenzen ) ,
Diagramm ( Position ( 2 ) ) ,
SendToReport (
Versenden (
{} ,
„NPN1“ ,
ScaleBox ,
{ Mindest ( 96.6346153846154 ) , Max ( 131.634615384615 ) , Inc ( 5 ) , Kleinere Zecken ( 0 ) ,
Referenzlinie hinzufügen ( 104.412948990151 , "Solide" , "Blau" , „LSL“ , 1 ) ,
Referenzlinie hinzufügen ( 131.893493064355 , "Solide" , "Blau" , „USL“ , 1 ) ,
Referenzlinie hinzufügen ( 118.153221027253 , "Solide" , "Blau" , "Ziel" , 1 )}
)
)
)
)
)
)
) ;
// Überwachen Sie die lokale Datenfilterung, indem Sie einen Blick in die Where-Klausel unter dem Kontrolldiagramm werfen
// Suchen Sie zuerst die TextBox mit der Where-Klausel
// (die Zahl variiert, aber es scheint immer die letzte zu sein)
Warten ( 0 ) ;
ich = 1 ;
Während ( Ist skriptfähig ( Versuchen ( Elternteil = jetzt [ Textfeld ( ich )] << Elternteil )) ,
Während ( parentType = Verkohlen ( Elternteil << Klassenname ) != „OutlineBox“ , Elternteil = Elternteil << Elternteil ) ;
ich ++;
) ;
// Mit angemessener Häufigkeit nach Änderungen suchen
Filter = "keiner" ;
Während ( Ist skriptfähig ( jetzt ) , // Wird ausgeführt, bis nw geschlossen wird
Warten ( 0,1 ) ; // Stellen Sie hier die Scanfrequenz ein
Wenn ( ! Wird vermisst ( neuer Filter = Versuchen ( jetzt [ Textfeld ( ich )] << gettext )) ,
Wenn ( Filter != neuer Filter ,
Filter = jetzt [ Textfeld ( ich )] << gettext ;
F ( ccb ) ; // Grenzen abrufen und eine Achse festlegen
)
) ;
) ;