5 Antworten Neueste Antwort am Dec 30, 2015 11:04 AM von Stefan

    Abfrage ob ein Script auf einem Client in Arbeit ist.

    Stefan

      Hallo,

       

      gibt es eine Möglichkeit abzufragen ob ein Script in Arbeit ist im Netzwerk?.

      Mein Problem ist folgendes : In einem Script wird ein Wert errechnet und in einem Feld abgelegt. Dieser Wert muss erst abgelegt sein damit ein anderer Client mit dem neuen Wert weiter arbeitet. Gibt es sozusagen eine Möglichkeit dieses Script zu sperren?

      Gruss

      Stefan

        • 1. Re: Abfrage ob ein Script auf einem Client in Arbeit ist.
          Markus Schneider

          nein, nicht direkt.

          aber: Man kann dies mit einem Hilfsfeld in einer Menutabelle (oder Hilfstabelle, nur ein Datensatz, Felder nicht global) loesen

          - beim Scriptstart wird das Hilfsfeld zB mit einer '1' gesetzt

          - beim Scriptende wird das Feld wieder auf '0' gesetzt

          -> beim Starten des Scripts wird zuerst geprueft, ob dieses Feld eine '1' hat. Falls ja, Meldung zeigen und Scriptabbruch

           

          problem ist bei einem unerwarteten Scriptabbruch - dieser muss abgefangen werden, dass das Hilfsfeld nur eine '1' hat, wenn das script auch laeuft...

          • 2. Re: Abfrage ob ein Script auf einem Client in Arbeit ist.
            Stefan

            Danke für die schnelle Antwort, hatte auch diese Idee, die leider nicht zuverlässig funktioniert. Habe zwei Rechner über Remote verbunden und folgendes Script ausprobiert :

             

            Script.tiff

            Wenn man auf beiden Rechner dieses Script gleichzeitig startet, kommt es hin und wieder vor, dass beide Scripts bis zum Ende durchlaufen. Im Scriptdebugger fällt das Problem nicht auf, nur im Realen führt der Befehl 'Feldwert setzen' auf dem einen Rechner nicht dazu das der andere sofort den Fehlercode 301 bekommt.

             

            Gibt es eventuell noch einen anderen Ansatz?

            • 3. Re: Abfrage ob ein Script auf einem Client in Arbeit ist.
              Markus Schneider

              an sich funktioniert dies hier recht zuverlaessig. Bei dir fehlt unmittelbar nach dem Setzen des Flags der 'commit' (schreibe Datensatz...) - der kommt etwas weiter unten

               

              allerdings ist es hier formell nicht moeglich, dass zwei Leute genau gleichzeitig das script starten. Wenn bei dir beide zur genau gleichen Zeit das script starten, koennen beide in das Feld schreiben?

               

              edit:

              - fuer den Fehlerabfang genuegt an sich 'letzterFehler <>0'

              - ist das flag vom Typ Zahl oder Text?

              (sollte aber nicht wirklich wesentlich sein; der commit wohl schon)

              • 4. Re: Abfrage ob ein Script auf einem Client in Arbeit ist.
                jkoester

                 

                Wenn man auf beiden Rechner dieses Script gleichzeitig startet, kommt es hin und wieder vor, dass beide Scripts bis zum Ende durchlaufen. Im Scriptdebugger fällt das Problem nicht auf, nur im Realen führt der Befehl 'Feldwert setzen' auf dem einen Rechner nicht dazu das der andere sofort den Fehlercode 301 bekommt.

                 

                Gibt es eventuell noch einen anderen Ansatz?

                 

                Das record locking funktioniert in FileMaker eigentlich tadellos. Der Scriptschritt "Datensatz/Abfrage öffnen" versucht einen Datensatz zu öffnen. Gelingt das, ist der Datensatz nach Ausführung für andere Teilnehmer im Netzwerk gesperrt. Wurde der Scriptschritt bereits von einem anderen Script ausgeführt, erhältst Du Fehler 301.

                Du könntest direkt am Anfang des Scripts abfragen, ob gesperrt oder nicht.

                 

                Grüße Jörg

                • 5. Re: Abfrage ob ein Script auf einem Client in Arbeit ist.
                  Stefan

                  Hallo Jörg,

                   

                  anscheinend muss man den Scriptschritt "Datensatz/Abfrage öffnen" vor dem Schriftschritt "Feldwert setzen" benutzen damit der Fehler 301 auf allen Rechnern ankommt. Anscheinend tritt mein Problem nicht mehr auf.

                  Danke an alle

                   

                  Gruss

                  Stefan