Jump to content
  • 0

Bijzonder lijstvorm bij invoer


marcelboot

Question

20 answers to this question

Recommended Posts

  • 0

Banach,  dit is me al bekend en dat bedoel ook niet.

Ik heb ooit een script gezien, dat na elke letter, die je invoert snel een selectie maakt van records die aan die tekst op dat moment voldoen. Zo kun je dus kiezen uit een lijst namen, waarvan er werd veel met Van beginnen, als je de Naam begint te typen. Naarmate je meer letters typt, wordt de lijst kleiner.

Ik vond dat script toen al briljant, maar ben het geheel kwijt geraakt.

Link to post
  • 0

Maak een calculatieveld  Zoek = substitute ( trimall ( Text;1;1)  ; " " ; ¶ )

Maak een globaalveld voor de zoek invoer

Maak een calculatieveld op de het globaalveld:    If ( IsEmpty ( Globaal ) ; "00000000000¶zzzzzzzzzzzzzzzzz"; Globaal  & ¶ & Globaal &"zzzzzzzzzzzzzzzzzzz" ) & Left (Globaal ; 0 )

Leg een dubbele relatie met de het calculatieveld    Calc ≤ Zoek en Calc ≥ Zoek

Als je tekst in de globaal invoert krijg je jouw gewenste lijst

 

Link to post
  • 0

Weet iemand hoe ik hiermee een lijst kan maken in een ander tabel, zodat ik de juiste kan kiezen na invoer van enkele letters? Ik wil namelijk bij een factuur aanmaken een keuze maken uit 250 relaties en zo'n lijst is te lang bij invoer, maar het lukt mij niet om met het script een lijst te produceren.

Link to post
  • 0

Maak een nieuw window type card en open de layout die je wilt gebruiken om een relatie te kiezen. Op deze layout kun je direct op de tabel zoeken. Maak een keuzeknop met de scriptstappen die het relatie ID te setten en window weer sluiten.

Link to post
  • 0

Een razendsnel alternatief voor selectie uit lijsten is het gebruik van card window in combinatie met sql queries. 
je laadt de zoekresultaten in een global tekstveld. 
daarna gebruik je een speciale CF om de regel te selecteren. Je klikt op de tekst als ware het een hyperlink. Een getriggered script destilleert de waarde voor verdere toepassing. 

je kan op deze wijze zelfs een zoekmachine realiseren die in meerdere tabellen tegelijk zoekt en records ophaalt. Dat vergt natuurlijk wat meer uitwerking. 
 

Deze benadering is echt razendsnel; veel sneller dan het laden van een lijst lay-out met daarop toegepaste zoekopdrachten. Dus een aanrader voor grotere zoektabellen. 

Link to post
  • 0

Geen voorbeeld mogelijk, maar ik help je visualiseren.

Stel je een selector schermpje voor (bedoeld als card-window)  waarin je - terwijl je typt - uit een groot aantal waarden zoekresultaten krijgt uit één of meerdere tabellen met een gecalculeerde sql-statement. Dat is gewoon een lijst van tekst die door het script in het global tekstveld wordt gezet. Dat gaat veel sneller dan records ophalen.

Vervolgens kan je op de lijst klikken. Je kan een custom functie maken om de betreffende waarde te selecteren. Dat kan omdat FileMaker de exacte positie van waar je klikt in de lijst kan laten weten: Get ( ActiveSelectionStart ) . De geselecteerde regels (waarde) kan je zo calculeren. 

Je sluit het scherm en past de geselecteerde waarde toe. 

Ik ga even niet in op de vele details, maar 'you get the idea'... Ideaal voor snelselectie uit grote lijsten, of voor het bouwen van multi-tabel zoekmodules (dat laatste kan standaard niet in FileMaker).

 

Naamloos.jpg

Link to post
  • 0

Het idee is goed maar ik vraag me af hoe je de volgende zaken hebt opgelost:

In het algemeen ga je op zoek naar het ID van een record. In dit geval vind je bijvoorbeeld de naam van een relatie. Ga je dan de bijbehorende ID weer terug zoeken met SQL? Lijkt me lastig met dubbele namen.

De gebruikerservaring van scrollen in een tekstveld lijkt me niet optimaal en als de tekst te lang is staat hij deels op de volgende regel.

SQL is hoofdlettergevoelig en daar moet je ook maatregelen voor treffen.

 

 

Link to post
  • 0

Zeker, Marcel. Je moet een hele goede reden hebben om deze benadering te kiezen. Sterker nog: kies altijd voor een popup-menu als deze volstaat. Als je tevreden bent over de performance, dan zeker niet voor deze techniek kiezen. 

Ari, je benoemt precies de uitdagingen, en er zijn er nog meer. Het gaat altijd om een ID, en bij multi-table zoek opdrachten ook nog eens op een tabel-specificatie, want anders kan je niet naar de gevonden record navigeren. Er zijn verschillende oplossingen of strategieën om probleem te vermijden. Per ultimo neem je de info mee in de resultaat-regels, of je splitst een presentielijst af van een ruwe lijst, - of als je uit mag gaan van unieke resultaatregels, dan gebruik je een 2e sql-statement om een id-veld op te halen.. 

Dat SQL case-sensitive is, is overigens geen probleem. Een kwestie van de juiste statements bouwen. :-)

T.a.v. scrollen: je ziet niet dat de layout heeel lang is. De kop staat op een navigatie-gedeelte, en blijft dus altijd in beeld als je naar beneden scrollt. Er zit een limiet aan natuurlijk. Maar net als bij Google, je hoeft niet de 50.000 pagina's met zoekresultaten af te gaan. Sterker nog: je wilt zo weinig mogelijk zoekresultaten; slechts één. Dus tik je een extra character tot de fuik zich sluit. 

Link to post

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