| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	 
	
	
		| Autor | 
		Nachricht | 
	 
	
		spirigwi •----->
  
  
  Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
  | 
		
			
				 Verfasst am: 09.09.2004 - 07:15    Titel: FileMaker macht Skriptablauf durcheinander | 
				     | 
			 
			
				
  | 
			 
			
				"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 | 
		 | 
	 
	
		  | 
	 
	
		Snow Administrator
  
  
  Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
  | 
		
			
				 Verfasst am: 09.09.2004 - 08:37    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		spirigwi •----->
  
  
  Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
  | 
		
			
				 Verfasst am: 09.09.2004 - 19:30    Titel: FileMaker hinkt gelinde ausgedrückt | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Snow hat Folgendes geschrieben: | 	 		  |   FileMaker soll ja schließlich auch noch etwas anderes tun wie z.B. die angegebene Datei öffnen.  | 	  
 
 
   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 | 
		 | 
	 
	
		  | 
	 
	
		Snow Administrator
  
  
  Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
  | 
		
			
				 Verfasst am: 09.09.2004 - 19:40    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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.    
 
FileMaker macht sich bei mir immer unbeliebter. _________________ Peter
 
-
 
Fischer-Bayern.de|Shadetreemicro.com | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		spirigwi •----->
  
  
  Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
  | 
		
			
				 Verfasst am: 09.09.2004 - 21:06    Titel: FM bruacht deine Hilfe Snow | 
				     | 
			 
			
				
  | 
			 
			
				              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 | 
		 | 
	 
	
		  | 
	 
	
		spirigwi •----->
  
  
  Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
  | 
		
			
				 Verfasst am: 09.09.2004 - 23:48    Titel: FM setzt Priorität seinen eigenen Skripts | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		spirigwi •----->
  
  
  Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
  | 
		
			
				 Verfasst am: 10.09.2004 - 07:57    Titel: Versuchbedingung vereinfacht zur Problemdarstellung | 
				     | 
			 
			
				
  | 
			 
			
				"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 | 
		 | 
	 
	
		  | 
	 
	
		Snow Administrator
  
  
  Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
  | 
		
			
				 Verfasst am: 10.09.2004 - 12:21    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				           JUBILÄUMS-BEITRAG Nr. 1000               
 
 
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.    _________________ Peter
 
-
 
Fischer-Bayern.de|Shadetreemicro.com | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		spirigwi •----->
  
  
  Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
  | 
		
			
				 Verfasst am: 11.09.2004 - 15:28    Titel: FileMakers ScriptMaker ist therapieresistent | 
				     | 
			 
			
				
  | 
			 
			
				"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. "
 
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
 
      -- 
 
      activate (display dialog ¬
 
         "nochmals starten" buttons ¬
 
         {"ok"} default button 1) --    
 
      open DATEI2 --vereinfacht, muss über AS laufen!
 
      return --      
 
   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 | 
		 | 
	 
	
		  | 
	 
	
		Snow Administrator
  
  
  Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
  | 
		
			
				 Verfasst am: 11.09.2004 - 16:43    Titel: Re: FileMakers ScriptMaker ist therapieresistent | 
				     | 
			 
			
				
  | 
			 
			
				 	  | 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 | 
		 | 
	 
	
		  | 
	 
	
		spirigwi •----->
  
  
  Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
  | 
		
			
				 Verfasst am: 12.09.2004 - 00:43    Titel: Re: FileMakers ScriptMaker ist therapieresistent | 
				     | 
			 
			
				
  | 
			 
			
				      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 | 
		 | 
	 
	
		  | 
	 
	
		spirigwi •----->
  
  
  Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
  | 
		
			
				 Verfasst am: 12.09.2004 - 11:31    Titel: FM gestartetes Skript ist mit finder gandenlos | 
				     | 
			 
			
				
  | 
			 
			
				" 
 
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 | 
		 | 
	 
	
		  | 
	 
	
		Snow Administrator
  
  
  Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
  | 
		
			
				 Verfasst am: 12.09.2004 - 13:38    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		spirigwi •----->
  
  
  Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
  | 
		
			
				 Verfasst am: 12.09.2004 - 18:40    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				"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 | 
		 | 
	 
	
		  | 
	 
	
		Snow Administrator
  
  
  Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
  | 
		
			
				 Verfasst am: 12.09.2004 - 19:15    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
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 
		 | 
	 
 
 | 
 
 |