Jump to content
  • 0

veld uit found set verzamelen


guyvt

Question

Posted

Een simpele vraag misschien, maar hoe kan ik in één keer al de values van een veld in de found set, in een return delimited list krijgen ?

 

Het veld is kwestie is de prime key van mijn tabel, maar dat maakt voor de oefening geen verschil uit denk ik.

Ik heb het geprobeerd met List() maar dat werkt enkel voor repeating fields, of voor related fields, niet voor de found set van de huidige tabel.

 

Ik kan natuurlijk een paar lijntjes script schrijven, de records overlopen en telkens de prime key & "enter" achter de vorige plakken, maar dat vind ik verre van elegant :-)

6 answers to this question

Recommended Posts

  • 0
Posted

Ah, dat laatste is schittered !

 

Een custom function die iteratief wordt opgeroepen en telkens mbv GetNthRecord de veldinhoud verzamelt :

GetNthRecord ( Field; StartValue ) &

If(IsValid(GetNthRecord ( Field; StartValue + 1));

¶ & GetValueSet(Field; StartValue + 1))

 

 

Dat ik daar niet opgekomen ben ;-)

  • 0
Posted

customList is ook een custom functie en ook recursief.

 

CustomList is echter veel sneller dan de bovenstaande oplossing omdat het zijn eigen recursiemodel heeft ontwikkeld die blijkbaar sneller is dan die van FileMaker. Je moet het maar eens testen!

  • 0
Posted
.....omdat het zijn eigen recursiemodel heeft ontwikkeld die blijkbaar sneller is dan die van FileMaker....

 

Is inderdaad een mooie, maar heeft als nadeel dat je de formule als tekst moet opgeven.

Daarmee wordt je opgegeven formule dus niet door FM zelf gecontroleerd op fouten en dat maakt hem gevoeliger voor problemen als er zaken wijzigen in de database structuur.

Maar snelheid heeft nu eenmaal zijn prijs :wink:

 

rmw

  • 0
Posted

normaal geeft deze functie de fout code terug die FileMaker vindt, je moet maar eens een functie ingeven die niet werkt. Maar je hebt gelijk dat het inderdaad zichzelf niet aanwijst. Het komt er dan ook op neer om goed te kijken wat er fout kan gaan.

 

Het enige wat echt fout kan gaan in dit voorbeeld is dat je idd de naam van het veld en tabel moet hardcoderen en als je dan de tabel of veldnaam verandert de functie niet meer werkt. Maar dit kan je dan weer omzeilen door gebruik te maken van de FM_Name_ID () custom functie, die je toelaat om het veld ID te coderen, waardoor je de veldnaam of tabelnaam weer wel mag veranderen, de custom functie zal dan aan de hand van de veld ID de juiste veldnaam opzoeken.

 

Ik zou de functie als volgt definieren (dit is wel uit de losse pols, dus kunnen fouten inzitten)

Let (
_functie = "GetNthRecord ( " & FM_Name_ID ( XX ; "T" ; "" ; "" ) & "::" & FM_Name_ID ( YY ; "F" ; "" ; "" ) & " ; [n] )"
;
CustomList ( 1 ; Get ( FoundCount ) ; _functie )
)

 

op die manier is ze terug dynamisch en kan je weer veld en tabel naam wijzigen.

 

 

Nog een voordeel van CustomList is dat het een recursie heeft tot 500.000, ipv 10.000 bij FileMaker.

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