Ga naar inhoud
  • 0

Go To Related Record... soms wel maar niet gescript


Stardust

Vraag

Beste forum leden,

 

Wanneer ik een knop maak op m'n layout met de opdracht GTRR werkt dit als een fluitje van een cent!

 

Echter wanneer ik die opdracht in een script plaats, gebeurt er niets wanneer ik dit script activeer, is dit normaal?

 

Weer een raadsel dat FM me voorschotelt en waarop ik met argusogen uitkijk naar jullie talrijke oplossingen en/of antwoorden.

 

Met vriendelijke groet,

 

Danny

Link naar reactie

9 antwoorden op deze vraag

Aanbevolen berichten

  • 0

GTRR (Go To Related Record) werkt vanuit de TOC (Table OCcurence) die aan de layout gekoppeld is vanwaar uit je de GTRR opdracht uitvoert. Dit heet de context. Wanneer je een knop hebt met enkel de opdracht GTRR doe je dit vanuit een bepaalde context. b.v. vanuit een layout met de TOC van KLANTEN en geef je aan dat je via de relatie CONTACTEN de aan die bepaalde klant gekoppelde contacten wilt zien.

 

In een script wordt de context bepaald tijdens het runnen van het script. Wanneer je dan het script met GTRR laat runnen vanuit een layout met een TOC die geen enkele relatie heeft met CONTACTEN, b.v. de PRIJSLIJST zullen er geen records uit CONTACTEN getoond worden omdat er geen relatie tussen deze twee TOC's bestaat.

 

De oplossing is dan ook om in het script eerst de juiste context op te roepen. Dat kan door je script te laten beginnen met een opdracht als Go To Layout waarbij je dan de layout aangeeft met de TOC KLANTEN. Vervolgens worden alleen CONTACTEN getoond wanneer er ook daadwerkelijk contacten aan het klantrecord gekoppeld zijn via de in de GTRR aangegeven relatie.

Link naar reactie
  • 0

Banach,

 

Vooreerst mijn dank voor je volledige antwoord. Ik ga dit eerstdaags toepassen (dus als eerste scriptstap naar de desbetreffende layout gaan) en ben nieuwsgierig naar het resultaat :|

 

Voor alle duidelijkheid, de desbetreffende knop staat in de bewuste (gerelateerde) layout en wordt van daaruit aangeklikt (geactiveerd).

 

Met dank en vriendelijke groet,

 

Danny

Link naar reactie
  • 0

Danny,

 

voor je een scripted GTRR doet, controleer je best of er wel degelijk related records zijn.

FileMaker gaat niet bewegen als er geen records zijn en de mogelijke volgende scriptstappen zullen uitgevoerd worden op de current found set in de current layout/table.

 

Dat kan nare gevolgen hebben. Denk maar even aan "delete records" als stap. Dan ben je records kwijt in de current table...

 

Je kunt die controle doen door een simpele script stap:

 

If [Count(relationship::related field]
  Other script steps
End If

 

Je kunt eventueel een omgekeerde controle doen als er geen records zouden zijn:

 

If [isEmpty(Count(relationship::related field)]
  Other script steps
End If

 

of ook nog:

 

If [not Count(relationship::related field]
  Other script steps
End If

Link naar reactie
  • 0
Voor alle duidelijkheid, de desbetreffende knop staat in de bewuste (gerelateerde) layout en wordt van daaruit aangeklikt (geactiveerd).

Zie daar het probleem. Wanneer je gerelateerde records wilt zoeken moet je dat vanuit het hoofdrecord (parent) doen en niet vanuit die gerelateerde records.

 

In mijn voorbeeld van KLANTEN en CONTACTEN zul je de GTRR opdracht moeten uitvoeren vanuit een layout met TOC KLANTEN. Doe je dit vanuit een layout met CONTACTEN als TOC dan weet je niet bij welke klanten je de contacten zoekt. Dit kan wel maar dan moet je e.e.a. anders inrichten.

 

Hier geldt dat je eerst naar de layout met TOC KLANTEN moet gaan voordat je via GTRR de bijbehorende CONTACTEN kunt vinden.

Link naar reactie
  • 0

Danny,

 

je mag dat knoppeke daar gerust laten staan als je goto vandaaruit past in je process.

 

Zorg er enkel voor dat je script exact doet wat je wenst.

Je kunt "backwards" door je relaties gaan om dan te tonen wat je nodig hebt.

 

Je kunt bijvoorbeeld op een record van een vergunning staan en wil de mogelijke andere vergunningen zien van die bepaalde houder.

Je script loopt dan terug naar de gerelateerde houder [ key field in variable] van die vergunning en dan doe je een GTRR voor die bepaalde houder.

De Freeze window stap zal beletten dat de tussenliggende layouts getoond worden.

Link naar reactie
  • 0
Wanneer je dan toch al vanuit de tabel met de gerelateerde records (CONTACTEN) die records van een bepaalde klant wilt hebben is een eenvoudige zoekopdracht op records met dat klantnummer nog weer een stuk simpeler. Je hebt dan GTRR helemaal niet nodig. :wink:

Zorg er dan wel voor dat je klantnummer een uniek en numeriek veld is, anders kan je verkeerde records vinden.

Link naar reactie
  • 0

Beste forumleden,

 

Dankzij de vele tips waarbij de Count functie de reddende factor was, ben ik weer een stapje verder. Er was nog het kleine probleem dat ik zelf gevonden heb... toen uiteindelijk ik begreep dat ik ook nog in het gerelateerde bestand naar de juiste layout moest gaan :oops:

 

Maar nu draait het als een tierelier!

 

Met dank aan allen,

 

Danny

Link naar reactie

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...