Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Stefan Rusterholz •->

Anmeldedatum: 15.07.2002 Beiträge: 7 Wohnort: Schweiz
|
Verfasst am: 15.07.2002 - 13:51 Titel: FileMaker, AppleScript und Speed - l”sst sich das kopieren v |
|
|
Hallo
Ich habe hier ein kleines AppleScript welches eine FileMaker Datenbank Eintrag für Eintrag durchläuft und alle relevanten Felder kopiert, am Schluss in eine Datei schreibt und diese dann per FTP auf den Server hochlädt.
Leider dauert das kopieren der Datensätze unerträglich lange (ca. 1s pro Record bei ca. 15 Feldern).
Was gibt es für Möglichkeiten, das zu beschleunigen?
Grüsse
Stefan _________________ Gr¸sse
Stefan |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 15.07.2002 - 14:15 Titel: FileMaker, AppleScript und Speed |
|
|
Hallo Stefan,
das ist mit diesen Infos natürlich nicht so einfach zu beantworten. Ich würde das Script als externes Script laufen lassen, die zu durchlaufenden DS via record ID in einem Loop abarbeiten und die Ergebnisse nach Möglichkeit je gefundenem DS in eine Datei schreiben. Im FMP muss darauf geachtet werden, dass der DS nicht explizit aufgerufen wird und wenn möglich (keine relationalen Felder!) über das Layout 0 gearbeitet werden. Das sollte eine schnelle Abarbeitung garantieren.
1.) Handler ID's in Variable holen
2.) Handler mit Loop durchläuft alle DS (database!)
3.) Einen expliziten Handler der die Ergebnisse in eine Datei schreibt
Gruß,
Folker
PS: Wenn möglich, aber das setzt genaue Prüfung des Materials voraus, kann via whose/where clause die ID's der _wirklich_ benötigten DS in einem Rutsch ausgelesen werden - das sollte dann very fast sein  _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 15.07.2002 - 14:27 Titel: FileMaker, AppleScript und Speed |
|
|
Hallo Stefan,
ich hätte mir ja denken können, dass Folker wieder mal pfeilschnell ist.
Nachfolgend habe ich mal ein kurzes Beispiel geschrieben, bei dem alle Datensätze zuerst in eine Variable geschrieben werden. Danach werden die einzelnen Bestandteile herausgepickt und zu einem tab-delimited Text zusammengesetzt. Ging bei 80 Datensätzen ruck zuck.
Aber in erster Linie soll das natürlich eine Ausgangsbasis sein.
Der FileMaker-Profi ist hier immer noch Folker.
Hier das Skript:
set TextToWrite to ""
tell application "FileMaker Pro"
go to layout 0
-- alle Datensätze in eine Variable schreiben
set RecList to every record of database "Stammposter AppleScript-Forum"
-- nur zur Information die Feldnamen
get name of every field of database "Stammposter AppleScript-Forum"
-- die Datensätze werden einzeln verarbeitet
repeat with oneRec in RecList
-- die benötigten Informationen werden extrahiert und als String zusammengesetzt
set temp to item 2 of oneRec & tab & item 4 of oneRec & tab & item 6 of oneRec & return
-- und an den bestehenden Text angehängt
set TextToWrite to TextToWrite & temp
end repeat
end tell _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 22.02.2003 - 16:21, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 15.07.2002 - 14:34 Titel: FileMaker, AppleScript und Speed |
|
|
Hallo Snow,
> dass Folker wieder mal pfeilschnell
keine Chance, bin mit OS X auf G3 PB unterwegs, das ist eher gemächlich ;)
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 15.07.2002 - 15:04 Titel: FileMaker, AppleScript und Speed |
|
|
Hallo Folker,
bei mir läuft X ja auch auf 'nem 400er Pismo. Stimmt, das geht schon recht gemütlich zu. Da hilft nur eins: Man muss es sich selbst dabei auch gemütlich machen. Tasse Cappuccino und dann ein Pfeifchen anzünden. :wink:
Du hast doch Erfahrung mit umfangreicheren Datenbanken. Ich könnte mir vorstellen, dass es Probleme gibt, wenn man alle Datensätze einer großen DB in eine Variable verfrachtet. Was sagt der Fachmann dazu?
Gruß
Snow _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
Stefan Rusterholz •->

Anmeldedatum: 15.07.2002 Beiträge: 7 Wohnort: Schweiz
|
Verfasst am: 15.07.2002 - 15:06 Titel: FileMaker, AppleScript und Speed |
|
|
Herzlichen Dank für die prompten Antworten!
@snow: kriegt man dich im ICQ eigentlich auch wieder mal zu sehen? :-)
Grüsse
Stefan aka apeiros _________________ Gr¸sse
Stefan |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 15.07.2002 - 15:11 Titel: FileMaker, AppleScript und Speed |
|
|
Zitat: |
@snow: kriegt man dich im ICQ eigentlich auch wieder mal zu sehen?
|
Schon möglich!
Ich hab's zur Zeit selten an, da es auf meinem Rechner etwas zäh abläuft. Da kann's stressig werden, wenn man mal ein paar Leute dran hat.
Und wer will schon Stress?
Aber ich werd' versuchen, wieder öfter daran zu denken, es einzuschalten.
Gruß _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 15.07.2002 - 16:02 Titel: FileMaker, AppleScript und Speed |
|
|
> es Probleme gibt, wenn man alle Datensätze einer großen DB in eine Variable verfrachtet
Jaha! darum mache ich es i.d.R. so: Ich habe ein FileMakerScript, welches mir die notw. DS sucht und sortiert in der entspr. Datei angelegt. Dieses rufe ich dann via AppleScript auf (do script filemaker script "Suche und Sortiere"). Daraufhin lasse ich mir vom document "MeineDB" die Liste aller record ID's zurückgeben - das dürfen dann schon einige DS sein Ö
on get_ids
Tell app "FileMaker Pro"
activate -- FMPScripte können nur im Vordergrund ausgeführt werden!
go to document "myDB"
tell document "myDB"
do script FileMaker script "Such&Sort"
set temp to ID of every record
if class of temp is not list then set temp to {temp} -- falls nur 1 DS gefunden wird
end tell
end tell
tell me to activate
return temp
end get_ids
So, und dann im Haupthandler den loop durch die id's laufen lassen und via
on get_Data(theID)
tell app "FileMaker pro"
tell database "myDB"
tell layout 0
tell record ID theID
usw. die gewünschten Daten anfordern - mittels Variablennamen und dynamisch gebauten cell-Namenslisten kann man diese Handler natürlich auch wiederverwerten Ö
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
|