Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

FileMaker macht Skriptablauf durcheinander
Gehe zu Seite 1, 2  Weiter
 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 09.09.2004 - 07:15    Titel: FileMaker macht Skriptablauf durcheinander Antworten mit Zitat

"Brauche Hilfe für AS in FileMaker:
-------------------------------------
Angenommen wir haben ein FM-File im Vordergrund:
"
--[Testbase]= ZB lautet sein Name
"(=Snows Ideal-Name,kann aber in meinem
Beispiel auch beliebig lauten)
"
"FileMaker kann dort( oder in anderem File) ein AS
speichern und auslösen lassen: nun beim Skript unten
machts mir aber die Reihenfolge des AS durcheinander,
dh. wenn es im FileMaker gespeichert ist überspringt es den
öffenen-Schritt! und wartet nicht bis FM-File2 offen ist!
Deshalb ist es im folgenden Skript nicht möglich, die
"
--[Datei2](s.unten)
"in geschlossenem Zustand zu halten (= dh. öffnen lassen),
ohne einer unangenehmen Fehlermeldung und Skriptabbruch nach
dem öffnen zu begegnen. Die Versuchsbedingung also:
"
--[Datei1](ZB[Testbase] ) geöffnet und im Vordergrund
--[Datei2](s.unten) - in geschlossenem Zustand:
"
--•VARIANTE A: Skript aus Smile(Skripteditor): kein Problem!

--•VARIANTE B: Skript in FM-File [Testbase] gelagert + gestartet:
Skriptabbruch nach dem Öffnen des FM-Files [Datei2](s.unten)
Wenn aber Datei2 einmal geöffnet ist durchs Skript, läufst beim
2. Durchgang voll ab.

--•VARIANTE C: Skript in 3. FM-File [Testbase] gelagert:
Fehler wie •VARIANTE B:
cave! für diese Versuchbedingung muss die erste Skriptzeile
so lauten:
"
set DATEI1 to name of window 2 --2+ ZB.[Testbase]=letzt-klick
"
Frage:
Welche Modulation wäre nötig, um es aus dem :
ScriptMaker™...[AppleScript ausführen] - ZB des File [Testbase]
haraus oder aus einem FM-Feld heraus starten zu können ohne
diese Fehlermeldung und Skriptabbruch nach dem öffnen
von [Datei2]?
Ein Versuch mit [repeat] ist mir kläglich gescheitert !
"
------------------------------------------------------
"(damit mein Beispiel-Skript unten sofort läuft versuch ich
meinem Helfer die Sache möglichst zu erleichtern mit dem
Vorschlag:
Das Ganze funktioniert(inkl.Text) mit [BEFEHL-C] und [BEFEHL-V]:

1) ein Neus FM-File (oder Duplikat von existierendem)
-->auf Schreibtisch unter irgend Name, ZB [Testbase] speichern.
2) dises dort duplizieren, damit der Name mit [ Kopie] endet
3) No 1) anklicken und damit in Vordergrund bringen und Skript
auch dort lagern, am besten im:
ScriptMaker™: [AppleScript ausführen]
damit auslösbar Zb mit Taste: [BEFEHL-1]
4) in einem Skripteditor-File (Smile-File) lagern und abfeuern.
"
------------------------------------------------------
tell application "FileMaker Pro"
   set DATEI1 to name of window 1 --wenn aus 3.FM File, setze 2 (!)
   set NameCurrLay1 to name of current layout of database DATEI1
   go to layout NameCurrLay1 of database DATEI1
   --bringt in den Vordergrund
   show record 1 of database DATEI1 --zeigt genau 1 Satz
   set NameCell1 to name of cell 1
   set bounds of window DATEI1 to {10, 153, 292, 255}
   set DATEI2 to DATEI1 & " Kopie"
   --2. Datei öffnen:
   --• •• •• •• •• •• •• •• •• •• •• •• •• •• •• •• ••
   PfadDATEI2opener(DATEI2) of me
   --• •• •• •• •• •• •• •• •• •• •• •• •• •• •• •• ••
   -- hier wie bremsen ? bis 2.Datei offen ist?
   --••bremst gut,wenn Skript ausserhalb FM deponiert!
   --••Fehlermeldung window(Object) !
   --wenn Script in FM deponiert ausgeführt wird"
   show layout NameCurrLay1 of window DATEI2
   set bounds of window DATEI2 to {7, 283, 484, 344}
   --delay 1 --zeige Bewegegung
   set bounds of window DATEI2 to {302, 88, 779, 149}
   set NameCell2 to name of cell 1 of window DATEI2 --Layout muss
   -- mind. 1 Feld ethalten?
   set contNameCell1 to cell NameCell1 ¬
      of current record of window DATEI1
   display dialog contNameCell1 & "--> in Zelle: " & NameCell2 ¬
      & return & "Datei: " & DATEI2
   show every record of window DATEI2 --einfachheitshalber
   set cell NameCell2 of window DATEI2 to contNameCell1
   go to layout NameCurrLay1 of database DATEI1
   --bringt in den Vordergrund
end tell
--#######################
on PfadDATEI2opener(DATEI2)
   tell application "Finder"
      set PFADDATEI2 to (path to desktop as string) & DATEI2
      repeat while ¬
         open file ¬
            PFADDATEI2 --[OriginalDatei] in Vordergrund!
         --nicht ____(!) [OriginalDatei Kopie] in Vordr.
      end repeat --????????? keine gute Lösung
   end tell
end PfadDATEI2opener
--set DATEI1 to name of layout 0 --=> Dateiname

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius


Zuletzt bearbeitet von spirigwi am 11.09.2004 - 16:00, insgesamt 3-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 09.09.2004 - 08:37    Titel: Antworten mit Zitat

Hallo Willy,

die Idee mit der Schleife ist schon mal nicht schlecht. Allerdings musst du es etwas anders angehen. Versuche aus der zweiten Datei etwas zu lesen. Erst wenn dies gelingt ist die Datei auch geöffnet. Dazu muss die entsprechende Anweisung natürlich in einen Try-Block, damit keine Fehlermeldung kommt.

Ich habe deinen Opener-Handler jetzt mal etwas abgeändert:

on PfadDATEI2opener(DATEI2)
set PFADDATEI2 to (path to desktop as string) & DATEI2
set checkflag to false
tell application "FileMaker Pro"
open file PFADDATEI2
repeat while checkflag = false
try
get cell 1 of last record of database DATEI2
set checkflag to true
on error
delay 1 -- 1 Sekunde Pause
end try
end repeat
end tell
end PfadDATEI2opener


Die Zelle, aus der versucht wird zu lesen, sollte nicht unbedingt ein Medienfeld mit einem riesigen Bild sein - eher ein kleiner Text - sonst kommt es evtl. dazu, dass das Skript recht viel Speicher beansprucht. Im Fehlerfall habe ich 1 Sekunde Pause eingebaut. Das verschafft vor dem nächsten Versuch etwas Zeit, damit die Datei vollständig geöffnet werden kann und sorgt auch dafür, dass das Skript FileMaker nicht unnötigt beansprucht. FileMaker soll ja schließlich auch noch etwas anderes tun wie z.B. die angegebene Datei öffnen.

Probiere mal dein Glück damit und berichte, wie es geklappt hat.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 09.09.2004 - 19:30    Titel: FileMaker hinkt gelinde ausgedrückt Antworten mit Zitat

Snow hat Folgendes geschrieben:
FileMaker soll ja schließlich auch noch etwas anderes tun wie z.B. die angegebene Datei öffnen.


Rolling Eyes Mir bleibt der Atem weg! wie schaffst du das so schnell ein ganzes Colt-Magazin an Wissen herauszupusten! Vielen Dank !
ZZ bin ich so paff dass ich als Torwart von diesem Snow -Schuss samt Ball in den Seilen zapple.
Sobald Luft kommt will ich das Skript in FM file einsetzen.
Ich fürchte aber, dass FM sobald man es zu Finderfunktionen verführt sogar nach (Tell des Finders) sich einfach nicht mehr erholt! Um diesen BUG endlich einmal nicht mehr zu umgehen, wird in unser aller Interesse sein. Werde mich sobald möglich mit neuem melden
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 09.09.2004 - 19:40    Titel: Antworten mit Zitat

Das obige Teil funktioniert noch nicht richtig. Ich habe es probiert, indem ich das Skript in einem Feld innerhalb der Datenbank angelegt habe. Da kommt dann eine blöde Fehlermeldung von wegen die Daten werden bereits von einer anderen Transaktion abgerufen oder so ähnlich.

Fehlerquelle ist das Öffnen der zweiten Datenbank. Hier hakt irgendwas. Überlässt man das Öffnen wieder dem Finder, kommt man zumindest soweit, dass die Fehlermeldung ausbleibt - aber das Spinning Wheel dreht sich und dreht sich und sonst passiert nichts. Wenn man dann das Skript zwangsweise beendet, wird sofort die zweite Datenbank geöffnet.

Es gibt also ein Problem mit der "Warteschleife". - Und das gilt es zu lösen. Das sind Sachen, die mich tierisch nerven. Wenn es aus dem Skripteditor heraus klappt, sollte es auch aus FileMaker heraus funktionieren. Alles andere ist doch Schwachsinn. grollend
FileMaker macht sich bei mir immer unbeliebter.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 09.09.2004 - 21:06    Titel: FM bruacht deine Hilfe Snow Antworten mit Zitat

Twisted Evil Arrow Idea Arrow Laughing wer zuletzt.. wird Snow heissen
"Besen, Besen seids gewesen! Um gottes willen, sich ja nicht in
Wutrauch auflösen! Wir brauchen dich unbedingt noch Snow!
Kannst ja gar nicht wissen was wir alles bei dir gelernt haben
dieses Forum...! einmalig.
Trotzdem, für das
Smilie mit diesem sauren Grind ,woher das
wohl wieder stammt !-das war die FileMaker Tour allein schon
wert.
Nun, vergiss ja mein 2. Idol neben Snow nicht: einer der Brüder
Klitschkos nämlich ging sogar wegen Wutanfalls k.o. !!!!!

Ich glaube wir müssen es mit FM vielleicht etwas mit
Nachsicht probieren, zumal historisch es als einziges mit AS
doch organisch mitgewachsen ist.

1) es ist offenbar eifersüchtig: wenn, wie du sagst (habs
nun auch nachgeprüft) man nicht
im FM selbst 2 mal
den FM-tell-block aufrufen kann
(Fehlermeldung es werde das
Programm schon gebraucht! deine Idee scheint mir aber genial)
hängt dies sicher auch mit dem ersten
Problem zusammen dh grundsätzlich das gleiche, nämlich:

2) FM kann nur sich selbst in den Vordergrund bringen wenn
das
AS abgeschlossen wird was den Eindruck erweckt dass es sich
offenbar nicht selbst an den Haaren aus dem Sumpf ziehen kann indem
wohl alles gleichzeitig abgeraspelt wird. Darum kurbelt das repeat
ewig bis zum Tag der Erlösung. Ich weiss dass du sie findest.

Wenn man nämlich innerhalb des FM_Skriptmaker die Funktionen
A)
öffner Skript (DATEI2 öffenn auf Finder)
B)
Tell Block FM mit Feldübertragung, bounds usw.
in 2 aufeneinderfolgende Skripts aufteilt und dazwischen
(FM(!) nicht AS) eine Pause von 2 Sec machen lässt, dann packt
er die Umstellung.(= Script unterbrechen/forts.[] )

Dies ist aber eine billige Umgehung des Problems sie könnte
aber die Lösung weisen: man könnte ZB um immer im AS zu bleiben
wieder auf Datei1 zurückweisen und dann erst auf Datei2:
ich suche mal diesen Weg weiter ab und melde mich subido.

vielleicht hilft auch eine Fehlermeldung die ich beobachtet
habe:
"
--error = -10006
"weiss aber ehrlich nicht was damit anfangen.
Snow bleib uns gnädig trotz FM(verdammt, schon wieder die Bibel)
ich werde noch fromm.
"

"
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 09.09.2004 - 23:48    Titel: FM setzt Priorität seinen eigenen Skripts Antworten mit Zitat

Ich versuch den FM-Nonsens zu formulieren:
FM wickelt zuerst immer alle seine FM-betreffenden Skripts ab, falls das AS im FM gespeichert ist.
Damit wird jede Finder Funktion hintangestellt und wird gesetzmässig immer nach den FM-Skripts ausgeführt, unabhängig der Position die der Finder-Befehl im Skript einnimmt.
Skripteditor befolgt jedoch die Reihenfolge.
Wenn dies wirklich Programm ist im FM dann gute Nacht, dann hat der AS-Skripter wirklich keine Chance.
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 10.09.2004 - 07:57    Titel: Versuchbedingung vereinfacht zur Problemdarstellung Antworten mit Zitat

"durch Reduktion der Versuchsbedingungen aufs Minimum
kann ich voraussetzen dass wir das AS-Skript in ein Feld von
Testbase deponieren und durch Taste im FM starten mit :
Taste angeben..Script ausführen..AppleScript..
Feldwert..Feld angeben
"

set DATEI1 to "Testbase"
set DATEI2 to "Testbase Kopie"
tell application "Finder"
   set PFADDATEI1 to (path to desktop as string) & DATEI1
   set PFADDATEI2 to (path to desktop as string) & DATEI2
   --open file PFADDATEI1
   --open file PFADDATEI2
end tell
tell application "FileMaker Pro"
   activate
   open file PFADDATEI2 --Fehler -10011 ander.Transaktion..
end tell

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 10.09.2004 - 12:21    Titel: Antworten mit Zitat

Weihnachts-Smiley errötend Bäh! Laughing JUBILÄUMS-BEITRAG Nr. 1000 Embarassed Rolling Eyes wasndas cool man müde

Hallo Willy,

für mich habe ich die internen Skripte erst mal abgehakt. Bisher habe ich auch meistens externe Skripte benutzt und bin damit gut gefahren. Der Nachteil ist halt, dass diese erst einmal gestartet werden müssen und dass sie von der Datenbank aus auch an einem bestimmten Ort vorhanden sein müssen. Wenn ich mir mit der Developer eine eigene Datenbank erstelle, ist das kein so großes Problem, da 'path to me' im Ernstfall den Pfad zu dieser Datenbankapplikation bereitstellt. Davon ausgehend kann man dann in einem Unterordner, der sich im gleichen Verzeichnis wie die Datenbank befindet, die Skripts unterbringen und deren Vorhandensein auch per Skript überprüfen.

Wer jedoch keine FileMaker Developer hat, sondern lediglich eine andere FileMaker-Variante, bekommt durch 'path to me' immer den Pfad zum FileMaker-Programm und nicht zur laufenden Datenbank.

Mit einer Statusfunktion bietet FileMaker jedoch den Dateipfad (zur aktuellen Datenbank) an: Status(AktuellDateipfad)

Ich habe mir also ein Formelfeld mit dieser Funktion angelegt und erhalte so den Dateipfad: "Datei://Datengrab/Desktop Folder/Testbase"

Für AppleScript ist der natürlich untauglich, deshalb folgendes Skript:

set DPfad to cell "PfadzuMir"
set AppleScript's text item delimiters to "/"
set ItemList to text items of DPfad
set AppleScript's text item delimiters to ":"
set Pfad to (text items 3 thru length of ItemList) as text
set AppleScript's text item delimiters to ""
display dialog Pfad


Ergebnis: "Datengrab:Desktop Folder:Testbase"

Wie in einem anderen Thread bereits einmal beschrieben, muss man nicht unzählige Skripts extern unterbringen. Man schreibt sie in ein einziges Applet und dort bringt man diverse Handler unter, die auf bestimmte AppleEvents reagieren. Wie man so etwas macht, habe ich in folgendem Thread schon mal aufgezeigt:

http://www.fischer-bayern.de/phpBB2/viewtopic.php?t=839

Das Beispiel dort zeigt, wie man beim Aufruf eines Handlers auch gleich Parameter übergeben kann.

Ein entsprechendes Applet mit nützlichen Handlern sollte man als 'stay open' also 'nicht automatisch beenden' speichern und beim Start der Datenbank im Startskript bereits aufrufen. Erst beim Beenden der Datenbank sollte das Applet dann auch gekillt werden. So spart man sich die Start-Zeit bei jedem Aufruf einer Funktion dieser Bibliothek.

Bevor ich mich wieder den Unzulänglichkeiten der internen Skripte zuwende werde ich mich wohl mit einigen "Forschungen" im Gebiet "Skript-Bibliothek" befassen. Das beruhigt wieder. dösend
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 11.09.2004 - 15:28    Titel: FileMakers ScriptMaker ist therapieresistent Antworten mit Zitat

"unser Modell:"
set DATEI1 to "Testbase"
set DATEI2 to "Testbase Kopie"
tell application "Finder"
   set PfadDerDATEI2 to (path to desktop as string) & DATEI2
   open file PfadDerDATEI2
end tell
--Dein Vorschlag: AS auswärts speichern:
"gut, das müsste ja gehen,dass man alle AS, welche für
FM-Datein gebraucht werden in einer FM-fremden, externen
Datenbank zum Abruf bereit hält (Applet mit nützlichen Handlern
-wie SNOW schreibt) und durch Applet mittels SriptMaker
aufgerufen reibungslos ablaufen.
Aber eben: Da das Applet gestartet wird mittels SriptMaker hast
du nur einen einzigen Schuss im Colt:
Sobald das AS im
"
--Applet mit nützlichen Handlern
"ein [FM-file] öffnen muss(um dort bounds zu machen...)
wird der SriptMaker foppen der das Applet gezündet hat:
"
--SriptMaker_1 (wäre ZB interner Name des FM-Skripts)
"wird einen 2. Schritt IMMER zuerst ausführen, selbst wenn er hiesse: "
--Script unterbrechen/forts.("0:00:02")

"Nun, was tun
Das öffnen eines [FM-file]s liesse sich zwar leicht umgehen
wie man in den folgenden Ausführungen sieht
(um dann weitere FM-Funktionen anhängen zu können wie ZB:
exportieren, importieren und all das komplizierte Zeug das
ich mit meinen handabgezählten grauen Hirnzellen niemals in ein AS hineinkriege) und zwar so:

Wenn man sich DATEI1 = Testbase als eine als Lokales File
auf dem Skripter-Komputer liegend vorstellt_nenne sie:
"
--[Testbase.APA]
"kann sie alles machen (ohne AS) mit DATEI2:"
--[Testbase Kopie.APA]
"aber auch als eine vom Server gehostete Datei vorstellbar:"
--(nenne sie [Testbase Kopie.HOST])
"Auch und vor allem: aus Testbase.APA heraus DATEI2 öffnen
lassen mit 1. Schritt im SriptMaker_1 der ZB so lauten müsste:
"
--Gehe zu Feld ()..in ein Beziehungsfeld zu DATEI2
"oder:"
--Script ausführen ..Fm lässt beim 1. mal choosen..
--Datei: [Testbase Kopie]"
--Script: open=(SriptMaker ZB Bildschirm nach vorn..)
"dies würde Testbase Kopie automatisch öffnen und nun könnte man unter SriptMaker_1 sogar das intern gespeicherte AS mit bounds
usw für beide files abrattern lassen, kein Problem, mit 1 einzigen
Tastenklick wird also FM-geöffnet und anschliessend ge-AS-t.

Nun warum nicht immer so einfach öffnen lassen?
Hier liegt mein Problem:

Wenn man sich DATEI1 = [Testbase] als eine vom Server gehostete Datei vorstellt
"
--(ich nenne sie [Testbase.HOST])
"und nicht als Lokales File auf dem SkripterKomputer liegend"
--[Testbase.APA]
"bietet FM aus HOST heraus keine Möglichkeit an, an die
Testbase.APA heranzukommen:
weder (wie oben gezeigt) zum öffnen, noch darin ein Skript zu
starten noch ein Feld zu erkennen,kein Import, nichts..)
Wers trotzdem tut nach obigem Weg fühlt sich im Sicheren solange
er den Skripter-Komputer nicht verlässt-wehe aber vom anderen
Netzkomputer her = Absturz samt Server !!!!!
Darum habe ich nach AS Lösung des öffnens gesucht, die existiert
aber auch nicht, weil FM-ScriptMaker beim [FM-file]-öffnen
"
--und nur bei[FM-file]-öffnen! bei anderen eben noProblem
"hängen bleibt, d.h ein Befehl zum öffnen mit AS(= über Finder)
von [FM-file] heraus müsste immer ein unabhängiges UND abge-
schlossenes Skript sein.

Was bleibt sind Umgehungsvorschläge:

1. dafür sorgen dass alle [FM-file]s für den Bedarf offen sind:
einfach: man öffnet immer ein File.APA das 1 Layout enthält,
ausgeblendet, damit Sicht nicht stört,das wiederum alle
Beziehungsfelder enthält
"
--(gemeinsames Bez.Feld= FOR1, ist Formel mit Zahl 1)
"zu den offen zu haltenden files. Das besorgt FM blitzschnell,
alle files sind im Hintergrund offen.
Damit können nun via AS sämtliche Funktionen für File.APA
aus dem HOST ablaufen mittels Finder-Pfaden da das File.APA
ja nun offen ist. Wo das AS gespeichert ist wird zweit-
rangig, intern oder extern läuft immer gut.
"
--Nachteil:
"verlangsamt unnötig da man oft aus Client-komputer nur kleine Serverabfragen braucht.

2. Man überlässt öffenen von [Testbase Kopie.APA] wiederum einem
[FM-file] das lokal gespeichert ist und einen ScriptMaker Befehl
bei seinem öffnen in einer 4.(!) Datei auslöst, immer unter
Umgehung von AS, wohlverstanden!!

3.Crying or Very sad
"
tell application "FileMaker Pro"
   --set bounds of window DATEI1 to {20, 55, 365, 409}
   if exists window DATEI2 then
      --AS scripten nach Lust und Laune
   else
      --Crying or Very sad
      activate (display dialog ¬
         "nochmals starten" buttons ¬
         {"ok"} default button 1) --Crying or Very sad Crying or Very sad
      open DATEI2 --vereinfacht, muss über AS laufen!
      return --Crying or Very sad Crying or Very sad Crying or Very sad
   end if
end tell
"Das ist harter Toback und sicher nicht für SNOWS Pfeiffen
geeignet:
einen 2. Wutanfall Snow ¿ s so nahe dem 11.Spetember, da in
Amerika 2 deutsche siamesische Zwillinge chirurgisch getrennt
werden, sogar gefährlich..ich hau ab
"


_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 11.09.2004 - 16:43    Titel: Re: FileMakers ScriptMaker ist therapieresistent Antworten mit Zitat

spirigwi hat Folgendes geschrieben:
Dein Vorschlag: AS auswärts speichern:
gut, das müsste ja gehen,dass man alle AS, welche für
FM-Datein gebraucht werden in einer FM-fremden, externen
Datenbank zum Abruf bereit hält (Applet mit nützlichen Handlern
-wie SNOW schreibt) und durch Applet mittels SriptMaker
aufgerufen reibungslos ablaufen.
Aber eben: Da das Applet gestartet wird mittels SriptMaker hast
du nur einen einzigen Schuss im Colt:
Sobald das AS im Applet mit nützlichen Handlern ein [FM-file] öffnen muss(um dort bounds zu machen...) wird der SriptMaker foppen der das Applet gezündet hat:


Hallo Willy,

das ist schon klar, dass im FM-Skript nur der eine Befehl (zum Starten des Applets) stehen darf. Aber das dürfte doch auch kein Problem sein. Wenn es mit dem FM-Skript weitergehen soll, ruft man eben im letzten Befehl des AS-Applets das nächste FM-Skript auf, das dann die weitere Arbeit erledigt. Dieses FM-Skript kann dann als letzten Befehl wiederum ein AS-Applet aufrufen usw.

Solange es aber nur darum geht, alle benötigten Datenbanken zu öffnen, würde ich auch bei reinen FileMaker-Mitteln bleiben und wie du es beschrieben hast, mit einem Layout arbeiten, das alle Beziehungsfelder enthält. Man braucht halt dann zum Beenden der Hauptdatenbank ein Skript, das auch alle verknüpften Datenbanken schließt, sonst geht die Hauptdatenbank wieder auf, sobald man versucht, eine der verknüpften Datenbanken zu schließen.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 12.09.2004 - 00:43    Titel: Re: FileMakers ScriptMaker ist therapieresistent Antworten mit Zitat

Very Happy Very Happy Very Happy wir habens!
Snow hat Folgendes geschrieben:
:
Das dürfte doch auch kein Problem sein. Wenn es mit dem FM-Skript weitergehen soll, ruft man eben im letzten Befehl des AS-Applets das nächste FM-Skript auf, das dann die weitere Arbeit erledigt. Dieses FM-Skript kann dann als letzten Befehl wiederum ein AS-Applet aufrufen usw.

"genau das funktioniert eben nur solange wie das AS ausserhalb
FM gestartet wird respektive im FM gestartet nur dann, wenn es
NICHT mit open-Funktionen für FM-files(!)des Finders (nur
diese) abgelenkt wird. Ist das nach Starten aus FM aber der
Fall wird FM das Applet zwingen die Reihenfolge zu übersprin-
gen und zuerst alle Skriptfunktionen ausführen wollen die FM
betreffen, dh das File auf das sich FM-Skript bezieht
wird gar nicht offen sein obwohl zuerst das öffnen geskriptet
wurde, und das offen sein des files ja als Conditio sine qua
non gilt damit FM seine Skriptfunktionen dort austoben kann.

Snow hast mich aber auf den Punkt gebracht: die AS sollen ja als
Teil einer komplexen FM-Kette ja nicht 2 mal aufgerufen werden
müssen,das wäre dann der Fall wenn AS noch FM-File - Pfade
suchen müsste, dies muss als strikte HygienMassnahme
tunlichst vermieden werden beim Skripten, da dies RETURN braucht sonst hängt FM:
Solange man sich verlassen kann darauf, dass alle nötigen
Fm-Files offen sind kann man problemlos AS im Fm-File in
irgenwelcher Form speichern (in Feldern, AS-Scripts des
ScriptMakers) da alle betroffenen FM-Files so ja nie einen
Pfad brauchen, da man sie immer wird als ZB:
"
--window "Testbase Kopie"
"aufrufen können. Dies gilt besonders natürlich für das FM-File
das die AS-Skripts enthält, die anderen muss man sich vorher
als geöffnet versichern! um sie bedenkenlos in AS-skripts
einbeziehn kann
"
-----------------------------
"Wie?
FM-File-Name ZB:
"
--[TestbaseAPA]-- also nicht Testbase !
"Öffnungskript heisst: \"open\" und beinhaltet:"
--Bildschirm aktualisieren
--Schliessen(\"TestbaseAPA]")
"ungebingt mit Name schliessen da durch umtaufen
dann nochmals bearbeitet werden kann:
wenn als [TestbaseAPAxxx] geöffnet wird kanns
nicht mehr schliessen, gut so.

[TestbaseAPA] ist folgendermassen konstruiert:
1 Layout ohne bes. Namen, dort liegen:
"
--alle(!) Beziehungsfelder
" zu sämtlichen als im Hintergrund offen erwünschten FM-Files.
Die Beziehungen müssen gar nicht funktionieren! dennoch werden
sie durch Feld-Anwesenheit ihre FM-files im Hintergrund öffnen
--ZB das Feld: Testbase Kopie::asdf öffnet [Testbase Kopie]

nun muss man dafür sorgen dass [TestbaseAPA] irgendeinmal
geöffnet wird am besten beim Eintritt ins FM-file:
"
-- [Testbase]
"ZB durch öffnen-Skript dort, das wiederum seinerseits[TestbaseAPA]
öffnet.
so das wärs.

Das Skript läuft nun immer reibungslos!
Man kanns auch von hier aus starten
sofern man Tesbase als letztes FM file klickt und wie des langen
gefunden(Jahre hab ich für diese Logik gebraucht, Snow hat mir
die Lösung ermöglicht) TestbaseAPA
einmal geöffnet war:
"
-----------------------------------------------
tell application "FileMaker Pro" -- im Fm nicht nötig
   set DATEI1 to name of window 1 --wenn aus 3.FM File, setze 2 (!)
   set NameCurrLay1 to name of current layout of database DATEI1
   go to layout NameCurrLay1 of database DATEI1
   --bringt in den Vordergrund
   show record 1 of database DATEI1 --zeigt genau 1 Satz
   set NameCell1 to name of cell 1
   set bounds of window DATEI1 to {10, 153, 292, 255}
   set DATEI2 to DATEI1 & " Kopie"
   --2. Datei öffnen:muss schon offen sein
   show layout NameCurrLay1 of window DATEI2
   set bounds of window DATEI2 to {7, 283, 484, 344}
   --delay 1 --zeige Bewegegung
   set bounds of window DATEI2 to {263, 98, 776, 366}
   set NameCell2 to name of cell 1 of window DATEI2 --Layout muss
   -- mind. 1 Feld ethalten?
   set contNameCell1 to cell NameCell1 ¬
      of current record of window DATEI1
   display dialog contNameCell1 & "--> in Zelle: " & NameCell2 ¬
      & return & "Datei: " & DATEI2
   show every record of window DATEI2 --einfachheitshalber
   set cell NameCell2 of window DATEI2 to contNameCell1
   go to layout NameCurrLay1 of database DATEI1
   activate
   --bringt in den Vordergrund
end tell -- im Fm nicht nötig

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 12.09.2004 - 11:31    Titel: FM gestartetes Skript ist mit finder gandenlos Antworten mit Zitat

"
Ich zeige wie ichs nicht hinkriege:
Ich chec`s jetzt endlich, das Skript soll also ausserhalb von
FM gelagert sein, etwa so: mach ichs richtig ?
"
-----------------------------
"Das AS auf dem Schreibtisch müsste heissen:"
--Opener_ExtSkript
" sein Inhalt so:"
-------------------------------------------
ExtSkript()
on ExtSkript()
   set DATEI1 to "Testbase"
   set DATEI2 to "Testbase Kopie"
   tell application "Finder"
      set PfadDerDATEI2 to (path to desktop as string) & DATEI2
      open file PfadDerDATEI2
      --DATEI1 nicht nötig da sicher offen ist.
      --HOST-Dateien brauchen URL-PFAD!
      --usw alle nötigen FM-Files öffnen:
      --Nachteil: sie kommen
      --mit dieser Methode alle in den Vordergrund!
   end tell
"nun das:
Zitat:
ruft man eben im letzten Befehl des AS-Applets
das nächste FM-Skript auf"

tell application "FileMaker Pro"
      do script FileMaker script ¬
         "boundsDatei2" of ¬
         window DATEI1 --Wirkung aber in DATEI2
   end tell
end ExtSkript
--------------------------------------
"folgendes ist das STARTERSKRIPT in DATEI1:"
-------------------------------------------
-- tell application "Finder"
--    set PFAD to (path to desktop as string) ¬
--       & "Opener_ExtSkript"
--    ExtSkript() of (load script PFAD)
-- end tell
-----------------------------------------
"folgendes in DATEI1 als AS-pasten = das eigentliche AS mit Name:"
--boundsDatei2
"Inhalt:"
--------------------------------
(*set bounds of window "Testbase Kopie" to ¬
   {375, 108, 743, 266}
--go to layout "Layout #1"
*)
--(* *)dann entfernen
-------------------------------------
"Falls DATEI2 bei SkritpStart aus Datei1 noch geschlossen
ist, entsteht bei mir nun leider auch so die Fehlermeldung:
Objekt nicht vorhanden Fehler -10006
Das DATEI2 wird zwar dann geöffnet aber boundsDatei2 nicht
ausgeführt
"

"deine Applet-Sammlung ist beeindruckend aber bevor
ich umstelle auf dieses System wie unten
"
Zitat:

-- Aufruf mit Parameterübergabe
on «event PEFItest» MeinPfad
   activate
   display dialog ¬
      "Der Pfad zur Datenbank lautet:" & ¬
      return & MeinPfad
end «event PEFItest»
-- Aufruf ohne Parameter
on «event PEFIdlog»
   activate
   display dialog ¬
      "Ich habe ein AppleEvent empfangen." with icon note
end «event PEFIdlog»
"
könntest du nicht für uns mal proben, ob man als
letzten Schritt ein FM-Skript in deine Applets gibt
wenn das vorhergehende Applets nicht nur einen Pfad liest
sondern ihn auch über Finder ausführt mit open, in Analogie zum Skript das ich auf ein auf Desktop geparkten, als handler aufrufbaren Skript in Sripteditor(Smile) file gelegt habe?
Vielleicht funktionierts ja so
"

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius


Zuletzt bearbeitet von spirigwi am 12.09.2004 - 18:45, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 12.09.2004 - 13:38    Titel: Antworten mit Zitat

Hallo Willy,

ich habe eben mal folgenden Handler in meine externe Skriptbibliothek verfrachtet:

on «event PEFIopFM»
    tell application "FileMaker Pro"
        if not (database "Testbase Kopie" exists) then
            open (path to "docs" as string) & "Testbase Kopie"
        end if
    end tell
end «event PEFIopFM»


Unter OS 9 und OS X gab es zunächst einmal das Problem, dass dies nur funktionierte, wenn das Applet durch den Eventaufruf gestartet wurde.

Wollte man den gleichen Aufruf später wiederholen, kam von Seiten FileMakers das große "Warten".

Nachdem ich jedoch bei den Einstellungen für "AppleEvent senden" den Haken bei "Beendigung des Events abwarten" entfernt hatte, lief das Teil anstandslos.

D.h. wenn FileMaker nicht auf die Antwort des Applets wartet, gibt man die gesamte Kontrolle an das Applet ab. Dann kann von dort aus wieder FileMaker kontrolliert werden.

Zum Test habe ich jetzt in der Datei "Testbase Kopie" ein FM-Skript angelegt, das eine Meldung anzeigt.

Im "Bibliothik-Skript" habe ich den entsprechenden Handler ergänzt:

on «event PEFIopFM»
    tell application "FileMaker Pro"
        if not (database "Testbase Kopie" exists) then
            open (path to "docs" as string) & "Testbase Kopie"
        end if
        
do script "Meldung zeigen"
    end tell
end «event PEFIopFM»


Hat funktioniert.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 12.09.2004 - 18:40    Titel: Antworten mit Zitat

"Super Snow, gleich haben wirs!
Die(vorläufige) Lösung liegt klar in der Benutzung
von
"
--AppleEvent senden--anstelle von:
--AppleScript ausführen[ ]
"nun die Nadelprobe der Reihenfolge: dein Handler heisst"

Snow hat Folgendes geschrieben:

on «event PEFIopFM»
    tell application "FileMaker Pro"
        if not (database "Testbase Kopie" exists) then
            open (path to "docs" as string) & "Testbase Kopie"
        end if
        
do script "Meldung zeigen"
    end tell
end «event PEFIopFM»


"ich würde unbedingt folgende Formulierung vorziehen:"
----------------------------------
tell application "FileMaker Pro"
   --do script "Meldung zeigen" --of window "Testbase"
   (do script FileMaker script ¬
      "Meldung zeigen" of window "Testbase Kopie")
end tell
-----------------------------------
" Grund: es ist nämlich dem Zufall überlassen
welches gerade window = 1 ist, FM sucht ein
"
--Skript "Meldung zeigen" nur
"in window 1 ! "
-----------------------------
"Ich lege also ein AS-Text ins "
--Testbase_ExtSkript--oder direkt in:
--AppleEvent senden..Script ausführen..Scripttext
-------------------------------
--ExtSkript2()--für application gespeichertes AS
--on ExtSkript2()
tell application "FileMaker Pro"
   if not (database "Testbase Kopie" exists) then
      open (path to desktop as string) & "Testbase Kopie"
   end if
   (do script FileMaker script ¬
      "Meldung zeigen" of window "Testbase Kopie")
   (do script FileMaker script ¬
      "boundsDatei2" of window "Testbase") --raffiniert!
end tell
--end ExtSkript2
--------------------------
"starte es aus Testbase mit"
--AppleEvent senden ...ohne Hacken
"funktioniert! Fm hält die Reihenfolge ein, öffnet zuerst!!
Grund: sicherlich wegen des Aufrufs durch
"
--tell application "FileMaker Pro"--nicht:
--tell application "Finder"
"und das ist der wesentliche Unterschied zu einem Aufruf:"
--AppleScript ausführen[ ]
"letzteres braucht Finder-Pfad und der wirkt sich fatal aus.
Aber aufgepasst, bei
"
--AppleEvent senden
"lauert Lebensgefahr: nämlich nur schon an den handler
heranzukommen mit AppleEvent senden hat sich FM den
Pfad mit einer Art choosen Funktion erschlichen, was sich
wiederum fatal auswirken könnte wenn ich diesen Pfad nun
in einem Server gehosteten File voraussetze auf einem Netz-
Komputer: obwohl dieser alles im gleichnamigen Ordner vor-
liegen hat könnte eine Abfrage entstehen wie sie mir oft bei
Programmen entsteht:..wo befindet sich FileMakerPro..
Ich versuchs mal und melde wieder, voller ZUVERSICHT!

Ps. dein
"
--"docs"
"ist wirklich genial: ich kann es einfach mit Wort: [desktop]
ersetzen und alle Sparglamente locker nachvollziehen
-Wiederum DANKE!
"

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 12.09.2004 - 19:15    Titel: Antworten mit Zitat

Hi Willy,

Zitat:
ich würde unbedingt folgende Formulierung vorziehen:usw...


Ich habe zum Testen absichtlich eine fehlerträchtige Formulierung verwendet.

Mein "docs" kommt daher, dass ich das Beispiel unter OS X geschrieben habe und die Testbase dort im Dokumente-Ordner liegt. Aber wie du ja bereits bemerkt hast, lässt sich das leicht anpassen.

Wegen der Pfade auf dem Server. Ich weiß nicht genau, ob sich FileMaker bei "AppleEvent senden" -- "Programm angeben" absolute oder relative Pfade merkt. Absolute Pfade wären natürlich schlecht. Den Test überlasse ich aber mal dir.

Gruß
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter