Ga naar inhoud
  • 0

Weet FileMaker dat ik bij de laatste record ben en kan FM dat aan mij laten weten?


Laurens Zwartkop

Vraag

Geplaatst:

Situatie: In verband met een oefenronde ga ik in een gevonden reeks van record naar record. Dat wil zeggen: ik klik op een knop met een instelling die om de volgende record vraagt en zo werk ik de hele reeks af tot ik bij de laatste record kom. Daar wil ik via een andere knop om een nieuwe lay-out vragen. Maar hoe krijg ik dat voor elkaar? Ik zou de eerste knop (op het moment dat ik bij de laatste record ben) een andere instelling kunnen geven ('Ga naar'). Maar hoe weet FileMaker dat ik bij de laatste record ben? En hoe kan FileMaker dat mij weer laten weten? Ik bedoel niet dat linksboven op het scherm (in de statusbalk) de oplossing te vinden is. Daar kan ik namelijk niets mee automatiseren. 

Ben heel benieuwd of iemand mij kan helpen! 

18 antwoorden op deze vraag

Aanbevolen berichten

  • 0
Geplaatst:

Als je in een loop naar een volgend record gaat heb je de mogelijkheid om de loop na het laatste record te verlaten (optie in de scriptstap).

Wanneer je op een andere manier te werk zou gaan kun je bijhouden hoeveel records je in de gevonden reeks hebt en een teller bijhouden hoeveel je er gehad hebt.

De eerste methode is natuurlijk de simpelste.

  • 0
Geplaatst:

Je kan de knop gewoon ergens op je layout (header, footer of in de body) zetten en in de eigenschappen "Hide object when" de volgende formule neerzetten:

Get ( RecordNumber ) ≠ Get ( FoundCount )

De knop wordt dan alleen getoond als het huidige actieve/geslecteerde record het laatste record is 

  • 0
Geplaatst:
Op 24/11/2020 om 09:30 zei bigbadwolf:

Als je in een loop naar een volgend record gaat heb je de mogelijkheid om de loop na het laatste record te verlaten (optie in de scriptstap).

 

Ik heb geprobeerd mijn probleem op te lossen door een loop in te zetten. Die loop wordt inderdaad na de laatste record verlaten, precies zoals je zegt. Maar dat doet ie in één sprong. Het script zorgt ervoor dat de herhaalde tussenstap (Ga naar volgende record) hup hup hup gezet wordt. Achteraf gezien logisch. Het probleem is, dat in de tussenliggende records de instelling zodanig gedacht was, dat met een knop om de volgende record wordt gevraagd. Dat is in het script niet verwerkt en waarschijnlijk is dat ook niet mogelijk. 

  • 0
Geplaatst:
Op 24/11/2020 om 16:50 zei menno:

Je kan de knop gewoon ergens op je layout (header, footer of in de body) zetten en in de eigenschappen "Hide object when" de volgende formule neerzetten:


Get ( RecordNumber ) ≠ Get ( FoundCount )

De knop wordt dan alleen getoond als het huidige actieve/geslecteerde record het laatste record is 

Welke knop?

Waar kan iets over de eigenschappen worden ingevuld?

  • 0
Geplaatst:

Denk de knop die je zelf benoemt in je vraag.

Alles is mogelijk, maar je moet helder kunnen definiëren wat je wilt. Je kan de knop verbergen, of je koppelt het aan een script dat deze voorwaarde hanteert (in een if/else if/ end if statement).

Ook kan je verschillende knopjes op de layout zetten, en deze voorwaardelijk tonen of verbergen. Zie daarvoor het info-paneel (rechterzijde in layout-modus)

  • 0
Geplaatst:
3 hours ago, Laurens Zwartkop said:

Het probleem is, dat in de tussenliggende records de instelling zodanig gedacht was, dat met een knop om de volgende record wordt gevraagd.

Om dat te bereiken moet je in je script een pauze inbouwen en op je lay-out een knop zetten die als enige functie ‘doorgaan’ heeft.

Het script zal dan bij iedere pauze wachten tot je op de knop drukt.

  • 0
Geplaatst:

Beste Bachje, Bigbadwolf, Marsau, Menno en Ari,

Hartelijk dank voor jullie antwoorden en suggesties. Sommige ervan kon ik niet of niet meteen begrijpen, andere waren nét niet wat ik zocht. In alle gevallen heb ik er uren en dagen aan besteed zonder verder te komen. Tot vanmiddag. Opeens kwam ik er achter hoe ik met een record-teller kon werken en die alleen tevoorschijn kon laten komen bij de laatste record van een reeks. Dank, Menno, voor de formule!

Wat nog rest is het volgende. Als de laatste record actief is, wil ik dat de knop 'Klik hier om verder te gaan' (die steeds de betekenis had van 'Naar de volgende record') nu gaat betekenen: 'Ga naar lay-out...'

Ik denk wel dat ik er zelfstandig uit zou komen, maar zit nu toch in tijdnood. Wie een antwoord weet of me op weg kan zetten: Welkom!

Groeten, Laurens

  • 0
Geplaatst:

Laurens,

Door een vergelijk te maken in welk recordnummer je zit en te ‘tellen’ wat het totaal aantal records is weet je dat je bij de laatste bent aangekomen.

get ( recordnumber ) = get ( foundcount)

Als dat het geval is kun je of de knop tevoorschijn laten komen, of de tekst van de knop laten wijzigen. En daarmee een ander script triggeren.

  • 0
Geplaatst: (aangepast)
7 uur geleden zei andries:

wij gebruiken een eigen functie lastRecord : get ( recordnumber ) = get ( foundcount )

Ik had er een tekst-macro voor gemaakt (zo vaak type ik het), maar dit is inderdaad nog beter :-)

aangepast door Marsau
  • 0
Geplaatst:
Op 10/12/2020 om 16:59 zei andries:

wij gebruiken een eigen functie lastRecord : get ( recordnumber ) = get ( foundcount )

en dan je doen: hide [ not lastRecord ]

dat verhoogt de leesbaarheid van de code vind ik.

 

1633554373_Schermafbeelding2020-12-15om17_32_42.png.66e4667da476b6ac921c50ceb99e3b93.pngDaarbij krijg ik commentaar van FileMaker

  • 0
Geplaatst:

Als bovenstaande is wat je als formule gebruikt dan is het logisch dat FileMaker het niet snapt. De bovenste twee regels zijn identiek.

Weet ook niet precies hoe Andries de  hide ( not lastRecord ) gebruikt, maar de formule mist een IF of CASE.

Dus bijv.:

case ( get ( recordnumber ) = get ( foundcount ) ; hide ( not lastRecord ))

  • 0
Geplaatst:

Hij gebruikt de statement als custom functie. Indien aangeroepen komt een logische waarde, waar of niet waar. Meer is niet nodig.

Erg slim. Als je het vaak toepast. 

Wellicht moet er een uitzondering zijn voor lege sets, maar dat terzijde. 

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...