Jump to content
  • 0

Zoekformulier met ingebouwde OR zoekopdracht


hgroenewegen

Question

Posted (edited)

Probleem: ik ben niet in staat vanuit één formulier meerdere OR zoekopdrachten te geven aan onze NaamAdresWoonplaats bestand.

Situatie: in ons bestand van ca. 15.000 records bevind zich een veld met selectiecodes. Deze codes vertegenwoordigen disciplines waarop ik wil selecteren. Omdat deze codes alleen voor ingewijden duidelijk zijn, wil ik voor elke code een verklarende titel bieden in een zoek-formulier. Vanuit dit formulier wil ik in één keer, een aantal verschillende zoekvragen te stellen in het selectiecode-veld door bijvoorbeeld een vink te geven bij een betreffende selectiecode.

Ik heb geprobeerd via invoerlijsten met één enkele optie (vanwege het vinken), variabelen in te stellen en 'zoekvraag uitbreiden' te gebruiken maar het lukt niet. Dus vinkveld -> variabele -> zoekvragen naar selectiecode-veld -> zoeken. De selectiecodes (max. ca. 30 codes per record) zijn gescheiden door een ; (punt-komma).

Graag hulp!

Edited by Guest

12 answers to this question

Recommended Posts

  • 0
Posted

Een OR opdracht maak je door in de zoekmodus simpelweg voor iedere OR een nieuw zoek-record aan te maken.

 

Je geeft een zoek op als altijd met de eerste OR-opdracht .... klik op nieuw en geef de volgende opdracht op ..etc totdat je alle opdrachten heb gegeven en voer je zoek uit. Dat is alles ;-)

  • 0
Posted

Beste Menno, dank voor je reactie.

Daar schuilt voor mij niet het probleem. Wat ik wil is de OR zoekopdrachten in één keer invoeren (in het formulier layout; bij voorkeur door gebruiker laten aanvinken) en dan een script de zoekopdrachten laten 'stapelen' en uitvoeren.

  • 0
Posted (edited)

ik weet niet hoe geavanceerd je het precies wilt maken, maar als we geavanceerd even voor later bewaren dan kan je als volgt aanpakken:

Plaats in je formulier een global-tekstveld met daarin alle keuzes in één veld als aankruisvlakjes óf je zet hetzelfde global-veld evenveel keer op de layout als dat je keuzes hebt en maak voor iedere keuze een keuzelijst met één waarde die je in ieder afzonderlijke instance van het veld als enkel aankruisvlak aanbiedt.

Beide methoden leveren hetzelfde resultaat in het global-veld op als de gebruiker zijn keuze(s) heeft gemaakt, dat ziet er dan uit als:

keuze1
keuze2
keuze3 etc..

Daarna kan je met scripting naar de zoekmodus gaan en met een lusje iedere afzonderlijke keuze in een apart zoekrecord plaatsen zoals ik in mijn vorige antwoord schreef. De pseudo-code kan er dan als volgt uitzien:

Set Variable[ $result ; Let ( [ $list = Tabel::_Global ; $n = Valuecount ( $list ) ] ; 1 ) ] 
Enter Find Mode [ ]
Loop
 Exit loop if [ Let( [ $i = $i + 1 ; $value = GetValue ( $list ; $i ) ] ; $i > $n ) ]
 Set Field [ Code ; $value ]
 New Record/Request
End loop
Delete Record/Request
Perform Find [ ]

Edited by Guest
  • 0
Posted

Heeft niet direct met de vraag te maken, wel met de oplossing: wat is eigenlijk het voordeel van het "Let" statement in het script? En daarmee samenhangend: het doel van de variabele "$result"?

  • 0
Posted

Met de let-statement zoals hier gebruikt, kan je in één keer een heleboel variabelen aanmaken in 1 scriptstap, ipv even veel scriptstappen set-variable als dat je variabelen nodig zou hebben.

 

$result is alleen maar een hulpje dat ik standaard inzet om deze constructie te kunnen gebruiken, maar je zou natuurlijk in het evaluatiedeel van de let-statement een berekening kunnen zetten, nu staat daar een 1. In de exit-loop-if zie je precies dezelfde werkwijze, alleen heb ik daar geen $result nodig en wordt $i > $n geëvalueerd.

  • 0
Posted

Dank Menno (en PJ007 voor het doorvragen). De idee met een loop en 'Let' ga ik testen op ons bestand. Helaas is er alhier (werk) een interne verbouwing /verhuizing gaande; moet dus heel even wachten tot ik iets (rustig) kan doen. Ik laat weten of ik er uit kom. Voorlopig heb ik weer goed moed!

  • 0
Posted

Beste,

Het is me niet gelukt, ook niet na de uiteenzetting van Menno. Er zijn teveel variabelen die ik niet snap. Kom er dus zelf niet goed uit.

5a758dd13755e_screenprintzoekscript.jpg.4e1fcc9eded5492bbf363ee79f3e6cd7.jpg

Dit is een voorbeeld van het script waar ik van alles mee heb geprobeerd.

Waarbij: - test3 is de tabel, zoekvelden (met invoerlijst): - raadsleden, - jongrrkc, - oudrrkc met disciplines die in de zoekvraag worden omgezet in de codes: 200, 201 en 202, waarmee gezocht wordt in het veld 'codes'

5a758dd13911d_screenprintzoeklayout.jpg.f7462c263054902ee014abaf514157e1.jpg

Ik hoop dat er een oplossing bestaat waar ik mee uit de voeten kan.

Bij voorbaat dank!

  • 0
Posted (edited)

Plaats de drie 'variabele instellen' script steps achter elkaar, dus vooraleer je naar zoekmodus gaat. Eens je in zoekmodus zit (na de script step 'Ga naar Zoeken'), heb je immers geen toegang meer tot de inhoud van de velden in bladermodus.

 

Los daarvan: zou je geen relationele oplossing overwegen? Ik bedoel een tabel met alle codes en omschrijvingen en een tussentabel met alle codes die op een NAW-record van toepassing zijn? Er is een oude UNIX-wijsheid die zegt:

Fold knowledge into data so program logic can be stupid and robust.

:wink:

Edited by Guest
  • 0
Posted

Ik heb even een bestandje gemaakt waarin de techniek die ik in mijn vorige post beschrijf heb gebouwd. Het is een klein beetje aangepast: 1) Geen global, dus invoer in zoek-modus en 2) Jouw eigenschappenlijst: 101;102;201 etc. heb ik omgezet naar het voor filemaker beter te hanteren: 101¶102¶201 etc.

OR_Zoeken.fmp12

  • 0
Posted

Hoi Menno,

Wederom dank voor je doordachte reactie; ik snap het en kan het toepassen (zij het dat ik het op m'n eigen leest geschoeid heb.). Ben nu bezig een telling-veld te maken dat telt hoeveel keer een gegeven in de recall terug komt. Zo kan de grootte van de mailing bepaald (beperkt) worden.

Hoop dat ik in de toekomst nog een keer van jouw ervaring gebruik kan maken.

Groet, Hans

  • 0
Posted

Graag gedaan en dat is precies de bedoeling ... je eigen draai er aan geven :-) Stel hier gerust je vragen, er zijn hier veel leden zijn die je met raad en daad willen helpen.

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