Prüfen Sie, ob die Tabelle schreibgeschützt ist?Hey,
Ich habe ein großes JSL-Skript, in dem es irgendwann ein paar Datentabellen öffnet, Daten in sie einfügt, sie speichert und schließt.
Jetzt läuft es normalerweise einwandfrei und ohne Probleme. Die geöffneten Datentabellen befinden sich jedoch auf dem Unternehmensserver und es kommt gelegentlich vor, dass jemand anderes die Datei geöffnet hat, was bedeutet, dass das Skript eine schreibgeschützte Version öffnet und nicht darauf speichern kann.
Gibt es eine Möglichkeit, dem Skript eine Möglichkeit hinzuzufügen, zu überprüfen, ob die Datei im schreibgeschützten Modus geöffnet ist, sodass ich das Skript abbrechen und den Benutzer warnen kann? Etwas Ähnliches wie Excel: Wenn Sie eine Datei öffnen, die von jemand anderem verwendet wird, erhalten Sie die Meldung „Datei wird von X verwendet. Möchten Sie eine schreibgeschützte Version öffnen?“.
Danke,
EdvinBetreff: Prüfen, ob die Tabelle schreibgeschützt ist?Ich habe endlich eine Lösung gefunden, die funktioniert, also poste ich sie für den Fall, dass in Zukunft jemand anderes diesen Thread findet.
dt = Data Table("Untitled");
Try(test = LogCapture(dt << save));
If(Contains(test, "problem"),
New Window("Error",
<<MODAL></MODAL>Wenn die Tabelle schreibgeschützt ist und nicht gesperrt werden kann, wird test angezeigt
test = "
I/O problem.
File not open in Write mode.
";
Deshalb funktioniert das Contains(test, „problem“).
Betreff: Prüfen, ob die Tabelle schreibgeschützt ist?Ja, ich habe auch das Gefühl, dass uns etwas Einfaches fehlt, trotzdem vielen Dank. Hat sonst noch jemand eine Idee?
Betreff: Prüfen, ob die Tabelle schreibgeschützt ist?Tut mir leid, mir sind die Ideen ausgegangen. Vielleicht fällt einem anderen Mitwirkenden eine Möglichkeit ein. (Es ist wahrscheinlich etwas Einfaches, das mir noch nicht in den Sinn gekommen ist.)
Betreff: Prüfen, ob die Tabelle schreibgeschützt ist?Hey,
Ich habe diese Lösung ausprobiert und versucht, die Try-Funktion auf verschiedene Arten zu konstruieren, aber sie scheint nie den zweiten Ausdruck zu erreichen, obwohl der erste einen Fehler generiert. Die Tabelle ist noch geschlossen, aber nicht gespeichert. So sieht die Protokolldatei aus:
Names Default to Here(1);
dt = Data Table("CharData G4 v3.0");
dt << add rows(1);
Try(
Close( dt, Save ),
Print( "Data table locked" );
);
I/O problem.
File not open in Write mode. Betreff: Prüfen, ob die Tabelle schreibgeschützt ist?OK, vielleicht verwenden Sie die Funktion Try( expr1, expr2 ). Das erste Argument ist ein Ausdruck, der immer ausgewertet wird. Verwenden Sie Ihren Speichervorgang für das erste Argument. Das zweite Argument ist ein Ausdruck, der nur ausgewertet wird, wenn das erste Argument einen Fehler generiert. Auf diese Weise können Sie den Fehler abfangen.
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// changes made to data table, save table
Try(
Close( dt, Save ),
Print( "Data table locked" );
);
// rest of script
Betreff: Prüfen, ob die Tabelle schreibgeschützt ist?Hey, vielen Dank für die Antworten. Leider funktioniert keine der Lösungen für mich, << Get Lock gibt „0“ zurück und << Get Edit Lock gibt „Empty()“ zurück.
Ich habe jetzt eine Tabelle auf einem anderen Computer geöffnet, und zwar auf meinem eigenen. Ich kann es auf meinem eigenen Computer so oft bearbeiten, wie ich möchte, nichts ist gesperrt. Aber wenn ich versuche, es zu speichern, gelingt mir das nicht und ich erhalte die gleiche Fehlermeldung wie zuvor: „E/A-Problem.“ Datei kann nicht im Schreibmodus geöffnet werden.Betreff: Prüfen, ob die Tabelle schreibgeschützt ist?Vergessen Sie meinen Vorschlag oben. Die Bearbeitungssperren sind vom älteren Sperrmechanismus getrennt. Ein einfacher Ansatz besteht darin, die Datentabelle zu öffnen und die Nachricht „<< Get Lock“ an eine beliebige Spalte zu senden. Wenn die Datentabelle gesperrt ist, sind auch alle Spalten gesperrt. Das Ergebnis sollte wahr sein (1).
Betreff: Prüfen, ob die Tabelle schreibgeschützt ist?Siehe Hilfe > Skriptindex. Suchen Sie nach „lock“ und schlagen Sie die Meldungen „Get Edit Lock“ und „Set Edit Lock“ nach. Der erste erhält die gewünschten Statusinformationen. Im zweiten Teil werden die Optionen beschrieben, die möglicherweise zurückgegeben werden.
Betreff: Prüfen, ob die Tabelle schreibgeschützt ist?Ich wollte es nur noch etwas klarstellen: Der Benutzer erhält eine Fehlermeldung mit der Meldung „E/A-Problem“. Datei kann nicht im Schreibmodus geöffnet werden.
Es erscheint nur, wenn das Skript versucht, die Tabelle zu speichern, sodass Tabelle 1 und 2 gespeichert werden können, Tabelle 3 jedoch nicht gespeichert werden kann, was meine Datenverarbeitung durcheinander bringt.
Ich möchte etwas hinzufügen, das den Schreibmodus prüft, bevor ich versuche, eine der Tabellen zu speichern. Ich verwende JMP 13.