Jump to content
  • 0

geen gezochte resultaten en dan terug naar het begin.


albert

Question

Posted

Wie weet hoe ik in een script kan opnemen dat als er geen records gevonden zijn met de ingevoerde kriteria ik weer terug kan gaan naar het bestand waar ik de zoek opdracht ben begonnen.

Nu beland ik via een subsript in een ander bestand maar als er niets gevonden is wil ik graag automatisch terug keren.

 

Wie kan mij helpen?

9 answers to this question

Recommended Posts

  • 0
Posted

Ik zou het - uit de losse pols, dus let niet op de syntax, zo doen:

 

BESTAND1/SCRIPT1

Perform script (subscript / external :script2)

Exit script

 

BESTAND2/SCRIPT2

Set Error Capture on

Perform Find(restore)

If status(currentFoundCount)>0

Go to Layout x

Halt script

EndIf

 

Als het aantal gevonden recs 0 is dan is de voorwaarde niet vervuld en

wordt het subscript verlaten om de laatste regel van het hoofdscript uit te voeren

in dit geval Exit script, maar het kan ook Goto Layout zijn of iets dergelijks.

Ik heb hier voor het gemak een voorgekookte find gebruikt.

  • 0
Posted

inderdaad het werkt ook nog. wel heb ik even moeten zoeken want als ik restore aanzet bij perform find lukt het niet. dan krijg ik steeds de eerstezoekopdracht terug denk ik. waar is dat eigenlijk voor want ik moet het altijd uitzetten wil een script werken zoals ik het wil.

 

Arnoud in ieder geval bedankt voor je oplossing.

  • 0
Posted

Goeie berichten Albert.

 

Er zin twee manieren waarop je in FMP kan zoeken.

 

1. met een 'voorgekookte' find.

Dat wil zeggen dat je eerst handmatig een zoekaktie uitvoert, dus gewoon met

de pulldownmenus: Findmode, daarna veldjes invullen en dan OK of Perform Find.

Filemaker onthoudt de laatst uitgevoerde zoek. Dus met behulp van het commando

PerformFind(Restore) roep je deze als het ware weer op.

 

2. Met het volgende scriptje:

 

Find[ ]

SetField[ "woonplaats" , ""Amsterdam""]

SetField[ "naam" , ""Harry""]

PerformFind[ ]

 

SetField zorgt ervoor dat FMP in het veld Woonplaats, Amsterdam invult.

Dit is een voorbeeld van een AND zoek, dus een verfijnde zoekopdracht.

Let op de "" indien tekst wordt gezocht.

Restore moet je nu natuurlijk uitzetten!

 

Wil je een OR zoek uitvoeren (verbreding) dan ziet het er als volgt uit:

 

Find[ ]

SetField[ "woonplaats" , ""Amsterdam""]

NewRecord/Request

SetField[ "woonplaats" , ""Kasterlee""]

PerformFind[ ]

 

Alle recs waarin de woonplaats is hetzij Amsterdam of Kasterlee worden gezocht.

Kijk in de online handleiding wat het verschil is tussen een OR en een AND zoek en

ga daar wat mee oefenen.

 

Veel succes,

 

Arnoud

  • 0
Posted

Knappe tip, Arnoud. Maar bij Status(CurrentFoundCount) = 0 laat je blijkbaar je bestand achter met een lege found set. Hoe los je dat op om daarna niet via om het even welke weg in een "leeg" bestand terug te keren?

  • 0
Posted

bedankt ik heb al veel geleerd hier.

 

het probleem wat AVD schetst heb ik niet omdat ik terug keer naar een ander bestand waar ik de zoekaktie begon. Maar het bestand wordt inderdaad wel leeg achtergelaten.

  • 0
Posted

Inderdaad, zo blijf je zitten met een 'leeg' bestand.

Dat kan echter worden verholpen door twee regels toe te voegen na Halt:

 

BESTAND2/SCRIPT2

Set Error Capture on

Perform Find(restore)

If status(currentFoundCount)>0

Go to Layout x

Halt script

Else

Show All Records

EndIf

 

Daarmee heb je natuurlijk niet je oorsponkelijke foundset terug.

Als je dat echt wilt dan zou je voor het zoeken alle records kunnen waarmerken

met een ID, en daar later weer op laten zoeken.

Heb jij overigens nog een alternatief in gedachten André?

 

gr.

 

Arnoud

  • 0
Posted
Heb jij overigens nog een alternatief in gedachten André?

 

Nee: hier wordt dezelfde procedure gevolgd.

In de meeste gevallen, zoniet altijd, gaat de oorspronkelijke found set dus verloren. Een marker-veld toepassen gaat immers niet in een multiuseromgeving.

Voor de knotsgekken: er is wél een oplossing mogelijk die een found set per user bewaart indien we werken met machten van 2 en de resultaten van de optelling daarna ontbinden in factoren. Dit principe wordt trouwens ook toegepast door FileMaker om de gebruikte modifier keys te herkennen, in welke combinatie ze ook zijn gebruikt.

  • 0
Posted

Er is nogwel een derde manier om te zoeken.

Hierbij blijft de selectie namelijk in takt en is snel.

 

Tenminste als er een relatie is gelegd die is gebaseerd op het zoekargument.

Je vraagt dan namelijk uit of de relatie naar het andere bestand een waarde bevat.

 

relatie van A -> B

 

IF (not isempty (B::veld)

...

ELSE

...

ENDIF

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...