FM + AppleScript: Ich finde den Fehler nicht ...

H@ns

H@ns

Aktives Mitglied
Thread Starter
Dabei seit
31.12.2006
Beiträge
433
Reaktionspunkte
7
Hallo Leute,

wahrscheinlich habe ich ein ganzes Pfund Tomaten auf den Augen. Der Inhalt der Zwischenablage soll mit AppleScript in ein FM-Feld geschrieben werden. Das funktioniert aus FM heraus, wenn ich ein NATIVES Script unter Perform AppleScript verwende.
So sieht´s aus:
funktioniert.png


Das gleiche an gleicher Stelle als Calculated AppleScript funktioniert nicht, und ich weiß nicht warum *verzweifel*:
funktioniert-nicht.png


Kann mir irgend jemand helfen?

Viele Grüße
H@ns

P.S.: FileMaker Pro Advanced 14, FM Pro Server 13, Yosemite 10.10.4
 
Hallo Hans,

wie Du bist schon auf 14? :D

Dein Fehler ist, dass Du nicht verschachteltst:

Code:
tell application "FileMaker Pro Advanced"
   
    tell database "my name"
       
        tell current record
           
            -- set schnick schnack here…
           
        end tell
       
    end tell
   
end tell

Viele Grüße
 
Noch ein Tipp:

Innerhalb von dem Skript von FileMaker kannst Du "tell me" nehmen.
Dann läuft das in der Adavcend und/oder Pro und Du machst Dir das Leben leichter.

Viele Grüße
 
Das Ganze kann man auf folgendes Script zusammenstreichen:
Code:
tell me
   set cell "Tabelle::Feldname" of layout "Layoutname" to the clipboard
end tell

Gruß,
Thomas
 
@little_pixel @ThoRo
Vielen Dank, Ihr Beiden!
Es funktioniert noch nicht, aber Dank Eurer Tipps habe ich es weiter eingrenzen können.
In 2 Fällen funktioniert es: Wenn ich in FM das AS nativ ausgebe und wenn ich es als kalkuliertes FM-Script ausgebe und dabei den konkreten Feldnamen und Layoutnamen reinschreibe. Ab folgender Kombination funktioniert es nicht mehr:
Code:
"tell me"
& "¶" &
"    set cell \"KOX01 KON01 | Kontakt_ID | 1n::dt_XXXXWebSource\" of layout \"" & $NameLayout & "\" to the clipboard"
& "¶" &
"end tell"
Die Verwendung von $NameLayout führt dazu, dass es nicht mehr funktioniert. Im Script Debugger kommt die Meldung "last error: -10006 <unknown>.
Die Variable stimmt aber und enthält zu diesem Zeitpunkt auch tatsächlich den String mit dem Namen des Layouts ...

Irgendwelche Ideen? *seufz*

Danke und viele Grüße
H@ns
 
Ist lange her, aber fm möchte schon mal ein activate während ein script läuft

Tell me to activate

Als Einzeiler
 
Ist lange her, aber fm möchte schon mal ein activate während ein script läuft

Das Script ist allerdings auch ohne activate gelaufen und hat funktioniert, solange ich nicht die Variable eingebaut hatte ...
 
Hallo,

das "activate" gefällt mir gar nicht und das "delay" überhaupt nicht ;-)
Das ist beides nicht notwendig.

Ich habe gigantische Abläufe, die im Hintergrund laufen und das "activate" würde meine Anwender stören.

Soeben getestet und bei mir funktioniert es einwandfrei.
Wenn die Datenbank konkret angesprochen wird, und der aktuelle Datensatz, dann funkcioniert das einwandfrei.

Bitte baue es mal so ein…

Viele Grüße

Code:
tell me
   
    tell database "My Test"
       
        tell current record
           
            set cell "comment" to the clipboard
           
        end tell
       
    end tell
   
end tell
 
  • Gefällt mir
Reaktionen: H@ns
Bitte baue es mal so ein…
Es ist unfassbar - aber jetzt funktioniert es - vielleicht begreife ich auch noch warum ... ;-))
So sieht´s aus:
Code:
"tell me"
& "¶" &
"    tell database \"XXXXX_VIEW2.fp12\""
& "¶" &
"        tell current record"
& "¶" &
"            set cell \"" & $NameFeld & "\" to the clipboard"
& "¶" &
"        end tell"
& "¶" &
"    end tell"
& "¶" &
"end tell"

Herzlichen Dank für Eure Hilfe!!!
H@ns
 
Heisst das Feld tatsächlich "KOX01 KON01 | Kontakt_ID | 1n::dt_XXXXWebSource" ? Mit Leerzeichen, Pipeline und Doppelpunkten im Namen? Da kommt doch beim Erstellen des Feldes eine Warnmeldung, das es mit den verwendeten Sonderzeichen Probleme geben wird - die Warnung ist ernstgemeint und sollte unbedingt beachtet werden.

Feldnamen unbedingt ohne Umlaute, Leer- oder Sonderzeichen erstellen, korrekt wäre als Feldname z.B. "KOX01_KON01_Kontakt_ID_1n__dt_XXXXWebSource".

Gruß,
Thomas
 
Heisst das Feld tatsächlich "KOX01 KON01 | Kontakt_ID | 1n::dt_XXXXWebSource" ?
Hallo Thomas,
grundsätzlich hast Du Recht. In meinem Fall heißt der "reine" Feldname "dt_XXXXWebSource" - da sind die Regeln ja eingehalten. "::" ist das Trennzeichen zwischen Tabellenauftreten und Feldnamen (das Smiley ist eigentlich ein ":" und ein "d"). Das Tabellenauftreten heißt in diesem Fall "KOX01 KON01 | Kontakt_ID | 1n", und hier motzt und warnt FM nicht und ich habe auch noch nie Probleme damit gehabt.
Sieht vielleicht ein bisschen "strange" aus, aber ich programmiere nur zeitweise und versuche mit deutlichen Bezeichnungen "gegen das Vergessen anzukämpfen", damit ich schneller wieder reinkomme. ;-)))

Herzliche Grüße
H@ns
 
Auch wenn FileMaker beim Tabellennamen bzw. Tabellenauftreten keine Warnmeldung ausgibt gilt hier trotzdem das bereits für Feldnamen Gesagte. Ich würde also empfehlen auf Leer- und Sonderzeichen (und Umlaute) zu verzichten. Spätestens wenn man mal die Funktion "SQLAusführen" nutzen möchte, hat man ansonsten nur noch Probleme mit den (Tabellen-/Feld-) Namen...

Gruß,
Thomas
 
Auch wenn FileMaker beim Tabellennamen bzw. Tabellenauftreten keine Warnmeldung ausgibt gilt hier trotzdem das bereits für Feldnamen Gesagte. Ich würde also empfehlen auf Leer- und Sonderzeichen (und Umlaute) zu verzichten. Spätestens wenn man mal die Funktion "SQLAusführen" nutzen möchte, hat man ansonsten nur noch Probleme mit den (Tabellen-/Feld-) Namen...
Hallo Thomas,
mal sehen - ich bin ja nicht lernresistent ... ;-) Allerdings hat die Anwendung, die ich hier für uns gebastelt habe, mittlerweile 110 Tabellen, knapp 3.500 Felder, 400 Skripte etc. Da kannst Du Dir vorstellen, was das für ein Änderungsaufwand ist. *ächz*

Viele Grüße
H@ns
 
Das kann man ja nach und nach ändern - das Schöne an FileMaker ist ja, das solche Änderungen an Tabellenauftreten und Feldnamen automatisch weitergereicht werden. Aufwendig wird es nur wenn Datenim- oder exporte betroffen sind und z.B. Plugins oder Funktionsaufrufe wie WerteListeEinträge(), in denen man Namen auch fest eingetragen hat...

Gruß,
Thomas
 
Ebenfalls bei Formeln etc., die einen Feldnamen zusammensetzen, wie sein Screenshot von vorne vermuten lässt…

Viele Grüße
 
Spätestens wenn man mal die Funktion "SQLAusführen" nutzen möchte, hat man ansonsten nur noch Probleme mit den (Tabellen-/Feld-) Namen...
Ich möchte mich in Sachen FM mal als "engagierten Laien" bezeichnen. Deshalb bin ich natürlich neugierig: Wann macht eine SQL-Datenbank in Zusammenhang mit einer FM-Lösung Sinn (außer wenn ich was Bestehendes anzapfen muss)?
 
SQLAusführen arbeitet FileMaker-intern, hat also nichts mit dem Zugriff auf externe SQL-Datenbanken zu tun. Mit SQLAusführen kann eine SELECT Abfrage gestellt werden, ohne das man dafür irgendwelche bestehenden Relationen oder direkten Zugriff auf ein bestimmtes Layout braucht. Damit wird so eine Abfrage sehr flexibel und vor allem schnell...

Ich nutze es z.B. gerne um Umsatzzahlen für variable Zeiträume schnell zusammenzustellen und im "Chefmenü" anzuzeigen. Oder um z.B. eine Geburstagsliste der nächsten sieben Tage zu erstellen. Oder um....

Gruß
Thomas
 
SQLAusführen arbeitet FileMaker-intern, hat also nichts mit dem Zugriff auf externe SQL-Datenbanken zu tun.
Okaaaaaay, klingt spannend - hab´ ich mich noch nicht damit beschäftigt *schäm*, werd´ ich aber demnächst mal tun. Danke für den Tipp!

BTW: Das, an dem ich gerade herumbastele, hat auch was mit Geburtstagen zu tun. Wenn´s mal läuft, wird es pro Tag mindestens eine halbe Mannstunde gegenüber unserer jetzigen Vorgehensweise einsparen und sehr individuelle Geburtstagsgrüße möglich machen ... :)

Viele Grüße
H@ns
 
Zurück
Oben Unten