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


Anmeldedatum: 20.08.2003 Beiträge: 111
|
Verfasst am: 30.09.2003 - 14:14 Titel: exakte suche im Filemaker mit applescript? |
|
|
ich möchte, das filemaker nur genau die einträge findet, die im feld Ursprungssprache den EXAKT(jedes zeichen genau gleich) gleichen inhalt hat wie er text in der variable gesuchterText.
tell database "Wort DB"
set gefundenerEintrag to cell "TextNr" of (every record whose cell Ursprungssprache is equal to gesuchterText)
end tell
so gesucht, werden alle einträge gefunden, die ähnlich sind. |
|
Nach oben |
|
 |
Raimo •-->


Anmeldedatum: 20.08.2003 Beiträge: 111
|
Verfasst am: 30.09.2003 - 15:01 Titel: |
|
|
so ginge es:
set Ursprungssprache to "Text_DE"
set gesuchterText to "Gerät ziehen Netzstecker."
set Nummer to {}
tell application "FileMaker Pro"
activate
tell database "Wort DB"
-- Nummern aller gefundener record spreichern
set gefundenerEintrag to cell "TextNr" of (every record whose cell Ursprungssprache is equal to gesuchterText)
--Nur die Nummern behalten, die gleich lang sind wie gesuchterText
repeat with EinItem in (gefundenerEintrag as list)
set a to (cell Ursprungssprache of (every record whose cell "TextNr" is equal to EinItem))
if (count (a as string)) is equal to (count (gesuchterText as string)) then
set Nummer to Nummer & EinItem
end if
end repeat
-- Mit den noch übrigen eine Exakte(Zeichen für Zeichen) prüfung durchführen
set exaktheit to {}
set tempNummer to {}
if Nummer is not equal to {} then
repeat with eineNummer in Nummer
-- Inhalt des Records lesen
set einSatz to (cell Ursprungssprache of (every record whose cell "TextNr" is equal to eineNummer))
repeat with einBuchstabe from 1 to (count (einSatz as string))
--Jedes Zeichen prüfen
if item einBuchstabe of (einSatz as string) is equal to item einBuchstabe of (gesuchterText as string) then
set exaktheit to exaktheit & "Ja"
else
set exaktheit to exaktheit & "Nein"
end if
--Beim letzten Buchstaben eines Satzes bestimmen, ob exakt oder nicht
if einBuchstabe is equal to (count (einSatz as string)) then
if exaktheit does not contain "Nein" then
set tempNummer to tempNummer & eineNummer
end if
set exaktheit to {}
end if
end repeat
end repeat
set Nummer to tempNummer
--Wenn Nummer nun leer
if Nummer = {} then
display dialog "Kein Exakt gleichen Eintrag gefunden!" buttons {"Abbruch"} default button {"Abbruch"} with icon stop
end if
--Wenn immer noch mehr als ein Eintrag vorhanden, heisst dies.....(siehe display dialog)
if (count (Nummer)) > 1 then
set altDelimiter to AppleScript's text item delimiters
set AppleScript's text item delimiters to " "
set Nummer to Nummer as string
set AppleScript's text item delimiters to altDelimiter
display dialog "Die DB enthält 2 oder mehr exakt gleiche Einträge. Sie müssen dies bereinigen bevor Sie weiterfahren können! Es sind die Einträge " & Nummer buttons {"Abbruch"} default button {"Abbruch"} with icon stop
end if
end if
end tell
end tell
aber sagt mir bitte, dass es einfacher geht! |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 30.09.2003 - 18:24 Titel: |
|
|
Hallo Raimo,
FileMaker sucht den exakten Text, wenn dieser zwischen Anführungszeichen steht. Du brauchst also nur die Anführungszeichen bei der Suche mit zu übergeben, dann sollte es klappen.
set gesuchterText to "\"Gerät ziehen Netzstecker.\""
Und dann am besten eine FileMaker-Suche per Skript starten.
Ich weiß ja nicht, welche Version von FileMaker du hast. Ich habe hier die Developer 5.5 und kann damit für OS X kein Skript schreiben, das "whose" verwendet. Das führt nämlich sofort zum Beenden von FileMaker.
Wenn exakte Übereinstimmung gefragt ist, wäre es auch nicht schlecht, solche Suchabfragen in einen considering-Block zu stecken.
considering case
-- Vergleich
end considering
So wird zum Beispiel die Groß-/Kleinschreibung auch unterschieden. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 01.10.2003 - 09:45 Titel: |
|
|
Aber so wie ich Deine Frage verstehe, suchst Du nicht Text Exakt (der Terminus bezieht sich auf ganze Worte, d.h. Text Exakt findet "Hinz" im Feldwert "Hinz und Kunz") sondern "Feldinhaltsübereinstimmung". Dazu nutzt FMP den Operator ==. Und ohne FMP Suchabfrage geht es leider nicht (new request)! Der AS-Terminus "every record whose cell usw. funzt da nicht.
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Raimo •-->


Anmeldedatum: 20.08.2003 Beiträge: 111
|
Verfasst am: 01.10.2003 - 10:47 Titel: |
|
|
wie komme ich den mit einem request auf die einträge die gefunden wurden? so funktionierts nicht
tell application "FileMaker Pro"
activate
tell database "Wort DB"
delete every request
create new request
set cell Ursprungssprache of request 1 to "==" & gesuchterText
find
set gefundenerEintrag to cell "TextNr" of every record of request 1
end tell
end tell |
|
Nach oben |
|
 |
Raimo •-->


Anmeldedatum: 20.08.2003 Beiträge: 111
|
Verfasst am: 01.10.2003 - 10:52 Titel: |
|
|
habs selbst herausgefunden
tell application "FileMaker Pro"
activate
tell database "Wort DB"
delete every request
create new request
set cell Ursprungssprache of request 1 to "==" & gesuchterText
find
von hier nach unten verschoben & of request 1 entfernt
end tell
set gefundenerEintrag to cell "TextNr" of every record
end tell |
|
Nach oben |
|
 |
Raimo •-->


Anmeldedatum: 20.08.2003 Beiträge: 111
|
Verfasst am: 01.10.2003 - 10:59 Titel: |
|
|
@ Folker und Snow
THX vielmals
diese lösung ist doch viiiel schöner und einfacher (ich versuche auch immer das rad neu zu erfinden )
noch ne keine frage, was ist den nun besser "\"Gerät ziehen Netzstecker.\"" oder == ? es sollen nur die EXAKTEN (gleich lang/ gleicher buchstabe am selben ort/ jedoch ist die gross kleinschreibung egal) gefunden werden. |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 01.10.2003 - 12:38 Titel: |
|
|
Wie ich schon schrieb: Die Anführungszeichen finden Text Exakt, d.h. "Hinz" wird im Feldwert Hinz und Kunz fündig, nicht aber im Feldwert Hinze und Kohl! Das hat mit den indizierten 20 Zeichen je Wort was zu tun.
Feldinhaltsübereinstimmung findet nur Felder mit identischem Inhalt, wobei Groß- und Kleinschreibung keinerlei Einfluss hat: ==a findet auch A.
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
|