Hielfe bei Abfrageproblem

FM Clients alle Versionen (außer FM-Mobile) und Betriebssysteme
Forumsregeln
Sie befinden sich im Archivforum! Sie können hier alte Beiträge lesen und vorhandene Diksussionen ergänzen.
Neue Diskussionen können Sie in diesem Archiv nicht erstellen!

Hielfe bei Abfrageproblem

Beitragvon Sollist » Fr 11. Jun 2010, 23:31

Hinweis: Eintrag wurde aus altem Forum importiert. Ggf. kann es dadurch zu Darstellungsproblemen kommen.
Nachrichtensymbol: Bild
FileMaker Server Version: FM Advanced Server 8.0

Hallo FileMaker-Gemeinde

ich habe ein Problem mit dem ich einfach nicht weiterkomme, ich möchte mit den Suchergebnissen meiner ersten Abfrage weitersuchen.

Mein Script der ersten Abfrage steht so weit , jetzt möchte ich weitersuchen und da fehlt mir der Ansatz.

Ich habe bis jetzt folgenes erstellt:

* Suchenmodus aktivieren [ ] [ Pause ]
* Gehe zu Feld [ Punkte PL-6 Konvertiert::breite ]
* Berechneten Wert einfügen [ ${Punkte PL-6 Konvertiert}::breite - ,2
* &"..."&
* ${Punkte PL-6 Konvertiert}::breite+,2 ] [ Auswahl ]
* Gehe zu Feld [ Punkte PL-6 Konvertiert::länge ] [ Auswählen/Ausführen ]
* Berechneten Wert einfügen [ ${Punkte PL-6 Konvertiert}::länge - ,2
* &"..."&
* ${Punkte PL-6 Konvertiert}::länge+,2 ] [ Auswahl ]
* Gehe zu Feld [ Punkte PL-6 Konvertiert::breite ]
* Ergebnismenge suchen [ ]

Das Ergebnis der Suche ergibt folgene Ergebnisse:

breite__länge__ Raum Feld
0,3 ___ 1,8 ___ 63___ 6422
0,2___ 1,6___ 67___ 6362
0,5___ 1,6 ___ 67 ___ 6300
0,1 ___ 1,8 ___ 67___ 6244
0,4 ___ 1,9___ 67___ 6274
0,2___ 2,0___ 67___ 6124
0,4 ___ 2,0___ 67___ 6291


Ich möchte nun nach allen im "Feld" vorhandenen Zahlenwerte weitersuchen. Mit dem ersten Datensatz wird es noch gehen, doch möchte ich mit allen gefunden gefundenen DS eine Suche durchführen.

Gibt es Möglichkeiten das in dem oben beschriebenen Script mit einzuarbeiten oder ist das mit FM nicht möglich?

Ich suche seit Tagen die Foren nach Lösungen ab, finden konnte ich aber nichts was mir weiterhilft.

Hat jemand ein Lösungansatz für mich!


Vielen Dank für jede Hilfestellung


Jochen :-?
Bremen
tangazo@web.de



<font size=1>[ Diese Nachricht wurde editiert von : Sollist am 11.06.2010 23:35 ]</font>

[ Diese Nachricht wurde editiert von : Sollist am 11.06.2010 23:46 ]
Sollist
 
Beiträge: 3
Registriert: Fr 11. Jun 2010, 00:00
Wohnort: Bremen

Antwort

Beitragvon mmaass » Do 24. Jun 2010, 14:17

Hinweis: Eintrag wurde aus altem Forum importiert. Ggf. kann es dadurch zu Darstellungsproblemen kommen.

Zunächstmal solltest Du der Tabelle "Punkte PL-6 Konvertiert" einen Namen geben, der den Konventionen entspricht, z.B. "Punkte_P_6_Konvertiert". Dann entfällt auch die Notwendigkeit für die Maskierung per ?{...}. Grundsätzlich sind in Feldnamen alle Sonderzeichen, Umlaute, mathematische Operatoren (+-*/: usw.) und Leerzeichen zu strikt zu vermeiden. Werden sie verwendet, muss aufwendig maskiert werden.

Änder als Erstes mal den Namen. FileMaker aktualisiert alle Verweise auf die Tabelle automatisch. Mach aber vorher ein Backup bzw. eine Kopie der Datei!

Warum eigentlich der Zusatz "Konvertiert" im Namen? Klingt überflüssig. Hast Du da mal was importiert? Wenn ja, lass das einfach weg.

In Deinem Script verwendest Du zahlreiche unnötige und auch unsichere Schritte. Wenn z.B. das Feld, das Du mit "Gehe zu Feld" ansteuerst, nicht im Layout sichtbar ist, scheitert das Script. Gleiches gilt für "Berechneten Wert einfügen".

Den Suchmodus OHNE die Pause aktivieren! Sonst musst Du nochmal auf die Eingabetaste drücken, damit es weitergeht. Dann einfach die Inhalte mit "Feldwert setzen" reinschreiben und suchen. Für Bereiche sind übrigens 2 Punkte ausreichend: 1.01.2009..31.12.2009. 3 gehen aber auch.

Einfacher geht es jedenfalls so (ich gehe vom geänderten Tabellennamen aus):

* Suchenmodus aktivieren []
* Feldwert setzen [Punkte_PL_6::breite ; Punkte_PL_6::breite - ,2 & ".." & Punkte_PL_6::breite + ,2 ]
* Feldwert setzen [Punkte_PL_6::länge ; Punkte_PL_6::länge - ,2 & ".." & Punkte_PL_6::länge + ,2 ]
* Ergebnismenge suchen []

Nachtrag: Wenn Du nur in aufgerufenen Datensätzen suchen willst, einfach "Ergebnismenge einschränken []" statt "Ergebenismenge suchen[]" verwenden.

[ Diese Nachricht wurde editiert von : mmaass am 25.06.2010 09:05 ]
-----
[<--mmaass-->]
mmaass
 
Beiträge: 618
Registriert: Mi 12. Okt 2005, 00:00

Antwort

Beitragvon Sollist » Sa 26. Jun 2010, 14:27

Hinweis: Eintrag wurde aus altem Forum importiert. Ggf. kann es dadurch zu Darstellungsproblemen kommen.
Nachrichtensymbol: Bild

Hallo mmaass
vielen Dank für Deine Ausführungen. Du hast natürlich Recht mit dem was Du über die Namensgebung der Datei schreibst. Ich wollte nur schnell ein Beispiel zeigen ohne das ich jetzt schon die endgültige Fassung zeige. Ich habe es aber gleich richtig gestellt.

Ich möchte es Verdeutlichen nach was ich Suche.
Ich habe eine Tabelle: "Pkt_6" die u. a. Messwerte aus "Breite" und "Länge" und ein zugehörigen Wert in "Feld" besteht
Beispiel: Breite=0,2
Länge=11,8
Feld=6360
Der Feldwert z. B. 6360 kommt mehrmals mit unterschiedlichen Messwerten vor. Ich interessiere mich für alle noch vorkommenen Messwerte dieses Feld 6360 und allen noch gefundenen Messwerten.
In meinem Beispiel-Script habe ich die Möglichkeit die Werte für Breite und Länge einzugeben, im Script wird der Suchwert breite/länge um +/-0,2 erweitert und das Ergebnis ausgegeben. Das Script läuft nur für die Suche in einem Formular, in dem alle Felder vorhanden ist, ab.

Suchenmodus aktivieren [ ]
[ Pause ]
Gehe zu Feld [ Pkt_6::breite ]
Berechneten Wert einfügen [ Pkt_6::breite; ${Pkt_6}::breite - ,2 &".."& ${Pkt_6}::breite+,2 ]
[ Auswahl ]
Gehe zu Feld [ Pkt_6::länge ]
[ Auswählen/Ausführen ]
Berechneten Wert einfügen [ Pkt_6::länge; ${Pkt_6}::länge - ,2 &"..."& ${Pkt_6}::länge+,2 ]
[ Auswahl ]
Gehe zu Feld [ Pkt_6::breite ]
Ergebnismenge suchen [ ]

Als Suchergebnis erhalte ich:

breite_länge _ Feld
0,2 _ 11,6 _ 6115
0,2 _ 11,7 _ 6306
0,3 _ 11,7 _ 6462
0,2 _ 11,9 _ 6360
0,0 _ 12,0 _ 6323

Ich möchte nun nach den Werten aus dem Feld (also nach 6115, 6306, 6462 usw.) weitersuchen, ohne das ich nach jeder Zahl einzeln suchen muß.
Am liebsten hätte ich anschließend eine Liste mit breite_länge _ Feld sortiert nach "Feld"

ich hoffe es wird nun deutlicher was mich solange schon beschäftigt.

Ich bin für jede Unterstützung dankbar

Der Bremer Jochen
Sollist
 
Beiträge: 3
Registriert: Fr 11. Jun 2010, 00:00
Wohnort: Bremen

Antwort

Beitragvon mmaass » Mo 28. Jun 2010, 00:20

Hinweis: Eintrag wurde aus altem Forum importiert. Ggf. kann es dadurch zu Darstellungsproblemen kommen.

Zitat:
Als Suchergebnis erhalte ich:

breite_länge _ Feld
0,2 _ 11,6 _ 6115
0,2 _ 11,7 _ 6306
0,3 _ 11,7 _ 6462
0,2 _ 11,9 _ 6360
0,0 _ 12,0 _ 6323

Ich möchte nun nach den Werten aus dem Feld (also nach 6115, 6306, 6462 usw.) weitersuchen, ohne das ich nach jeder Zahl einzeln suchen muß.
Am liebsten hätte ich anschließend eine Liste mit breite_länge _ Feld sortiert nach "Feld



Ich schlage vor, Du legst dazu eine Beziehung an, die Du dann verwenden kannst, um mit "Gehe zu Bezugsdatensatz" alle Datensätze aufzurufen, die in diesem Feld mit den aufgerufenen übereinstimmen. Das machst Du über einen Self-Join:

Das Feld "Pkt_6::Feld" (also das, in dem 6115, 6306, usw. stehen) muss dazu indiziert sein - sehr wichtig! Dazu das Feld in "Datenbank verwalten > Felder" doppelklicken, Reiter "Speicher", "Indizierung" auf "Alle", und dann auf "OK".

Dann legst Du eine im Beziehungsdiagramm eine neue Tabelleninstanz von "Pkt_6" an, die Du "Pkt_6_sj_Feld" nennst und ziehst eine Verbindung zwischen "Pkt_6::Feld" und "Pkt_6_sj_Feld" mit dem Operator "=". Fertig. Du weißt, wie das geht?

Falls nicht, hier im Detail:

- Befehlstaste-Shift-D (Mac OS) bzw. Strg-Shift-D (Windows)
- Reiter "Beziehungen"
- Unten auf den Button "Beziehung bearbeiten" klicken (2. von llinks)
- Im Fenster dann links neben "Tabelle:" "Pkt_6" auswählen, rechts ebenfalls
- Links das Feld "Feld" suchen und anklicken, rechts ebenfalls
- Operator dazwischen "=" (wird vermutlich bereits so da stehen)
- Auf den Button "Hinzufügen", dann unten rechts auf "OK"
- Im dann erscheinenden Fenster den Namen des Auftretens angeben: Pkt_6_sj_Feld
- Auf "OK"
- "Datenbank verwalten" mit "OK" schließen.

Das Script erweiterst Du dann nach der Suche um den Schritt "Gehe zu Bezugsdatensatz" mit folgenden Einstellungen:

Bezugsdatensatz beziehen von: "Pkt_6_sj_Feld"
Datensatz zeigen mit Layout: <Aktuelles Layout>
Haken bei "Nur Bezugsdatensätze zeigen"
Option "Alle Datensätze in der aktuellen Ergebnismenge abgleichen"

Das bewirkt, dass alle Bezugsdatensätze aller aufgerufenen (bzw. gefundenen) Datensätze gezeigt werden, inkl. der bereits aufgerufenen selbstverständlich.

Dann noch ein Scriptschritt "Sortieren" (ohne Dialogfeld, Sortierfolge angeben: "Feld", Aufsteigend).

War es das, was Du wolltest?

Nochwas: Wenn Du die Tabelle in "Pkt_6" umbenannt hast, kannst Du die "Maskierung" (Dollarzeichen und geschweifte Klammern) jetzt getrost entfernen. Also statt ${Pkt_6} einfach Pkt_6.
-----
[<--mmaass-->]
mmaass
 
Beiträge: 618
Registriert: Mi 12. Okt 2005, 00:00

Antwort

Beitragvon Sollist » So 4. Jul 2010, 21:30

Hinweis: Eintrag wurde aus altem Forum importiert. Ggf. kann es dadurch zu Darstellungsproblemen kommen.
Nachrichtensymbol: Bild

Hallo mmaass

vielen Dank für Deine Hilfe es hat sehr gut funktioniert.
Ich war eine Woche im Urlaub so daß ich erst heute die danken kann.
Das war mir eine große Hilfe von Dir nochmals vielen Dank.

Grüsse an dich
Jochen
Sollist
 
Beiträge: 3
Registriert: Fr 11. Jun 2010, 00:00
Wohnort: Bremen


Zurück zu FM Clients