Jump to content
  • 0

Filteren in Portal


fredmatrack

Question

Posted

Beste FileMaker vrienden,

 

ik wil graag het volgende doen: door middel van een script! een filter maken in een portal.

 

Concreet heb ik een tabel Leerlingen (leerlingID, voornaam, achternaam), gekoppeld aan een tabel Inschrijvingen (inschrijvingID, leerlingID, schooljaar). Nu wil ik van een bepaalde leerling een lijst krijgen van de inschrijvingen. Dat lukt prima via een portal.

 

De volgende stap lukt echter niet: via een script enkel de records die met schooljaar 2007 te maken hebben laten zien.

 

Via een relatie lukt het wel: in de tabel Leerlingen een extra Globale aanmaken en die linken aan het veld schooljaar. Echter, zo kan ik niet alle records te zien krijgen of nieuwe records aanmaken via de portal.

 

Graag uw hulp.

Recommended Posts

  • 0
Posted

Beste,

 

Om alle zaken te vinden via een relatie moet je in de tabel waarop de portal gebaseerd is een nieuw veld aanmaken waarop je je relatie baseerd. Dit veld wordt een calculatieveld als volgt:

 

& "¶" &

"All"

 

Zo maak je een calculatieveld met de inhoud van je veld en een "all" waarde.

 

Nu als laatste stap zal je in de value list die gebruikt in je filterveld natuurlijk ook de waarde "all" in moeten zetten. Ik doe dit via een script..., daar ik mijn value list laat opvullen met alle waarden die voor dat veld voorkomen in de relatie...

 

De relatie wordt dus het filterveld gelinkt met het calculatieveld van de portal!

 

Hopelijk kan je met deze uitleg verder...

 

Mvg

  • 0
Posted

Hierbij een voorbeeld. Deze staat overigens al op het forum. Ik kan het topic alleen niet zo snel vinden.

 

Ik heb één aanpassing gedaan. Hierdoor staat de waarde die alles vertegenwoordigd gewoon in het lijstje. Als je nu nog een spatie ervoor zet staat deze ook nog eens altijd bovenaan.

 

Met dank aan de oorspronkelijke auteur!

filter.fp7

  • 0
Posted

Nog één vraagje hieromtrent:

moet de waarde die aangeeft waarop je wil filteren (de global) in de tabel staan die gelinkt is?

 

Is het mogelijk een derde tabel te maken (bv. tabelVariabelen) waarin die global zit. Vervolgens die tabel linken aan de tabel die in de portal wordt getoond.

 

Ik luk er niet in, misschien doe ik iets verkeerd?

  • 0
Posted

De filtervelden moeten in de tabel staan waarop de layout gebaseerd is!

 

Je kan nu eventueel een nieuwe tabel maken voor de globals, maar dan moet je de layout op die tabel baseren en natuurlijk uw tabel waarop de portal gebaseerd is linken zoals getoond in het filter voorbeeldje!

 

 

Ah ja nog een extraatje:

-) je kan ook op twee zaken tegelijk filteren in 1 filterveld, door de shiftknop ingedrukt te houden kan je twee waarden uit 1 valuelist selecteren.

-) door in het opstartscript de globals in te vullen met een bepaalde waarde kan je dus die filtervelden vullen met een default waarde...

-) enz....

 

Succes

  • 0
Posted

Iedere relatie is gebaseerd op het zelfde principe. De waarde aan de linkerkant moet overeenkomen met de waarde aan de rechterkant van je relatie. Alleen in dat geval zal er een waarde getoond worden in bijvoorbeeld een portal.

 

De truuk zit in het feit dat de waarde van het record aan de rechterkant (offerteregels) 2 waarden bevat. Bijvoorbeeld "geel" en de waarde "all" gescheiden door een Enter. Er ontstaat nu een "Of - Of" relatie in plaats van een "En - En".

Het record aan de linkerzijde kan "All" bevatten of "Geel". Beide zijn waar en dus wordt de regel getoond in je portal. Echter hebben alle regels de waarde "All" standaard door de berekening in het veld:

 

bijv.: Kleur & "¶Alles"

 

En dus worden alle regels getoond als je "All" selecteerd. En zie daar je filter.

 

Hiermee zou je verder moeten komen denk ik!

  • 0
Posted

Het werkt hier prima, hoor. Ik wilde alleen mijn 'originele' tabellen niet 'vervuilen' met extra global-velden. Die had ik namelijk liever in een aparte tabel gezet. Maar inderdaad, het kan logischerwijze niet zoals je aanhaalt.

 

Bedankt iedereen!

  • 0
Posted
Ik wilde alleen mijn 'originele' tabellen niet 'vervuilen' met extra global-velden. Die had ik namelijk liever in een aparte tabel gezet. Maar inderdaad, het kan logischerwijze niet zoals je aanhaalt.

Beste Fred,

 

Zoals zo vaak in FileMaker-land: het kan wél.

 

- Creëer een tabel 'GlobaleVelden' bv. en definieer de globals gLeerlingID en gSchooljaar.

- Maak een relatie tussen GlobaleVelden en Inschrijvingen, gebaseerd op de globale velden. Doe dit zoals hierboven in deze draad beschreven.

- Baseer je layout waarop je de portal ziet op een occurrence van GlobaleVelden.

 

Wel uitkijken in een multi-user omgeving: creëer een record per gebruiker in de GlobaleVelden tabel, anders zit je mogelijk met record lock problemen als je velden gaat wijzigen.

 

 

gr Jeroen

  • 0
Posted
Wel uitkijken in een multi-user omgeving: creëer een record per gebruiker in de GlobaleVelden tabel, anders zit je mogelijk met record lock problemen als je velden gaat wijzigen.

 

Dit lezende (uitgaande van multi-user met FM Server):

Globals worden in multi-user omgeving per client gedeclareerd. Is er desondanks toch een risico dat globals een record-lock gaan veroorzaken???

  • 0
Posted

Niet de globals op zichzelf uiteraard. Het is wel zo dat als je layouts baseert op een "hulptabel" met globale velden, dat als deze tabel slechts 1 record bevat, dat als 1 user gaat wijzigen, dat dan de record in de hulptabel met globale velden gelocked wordt, zodanig dat andere gebruikers niets kunnen wijzigen.

 

Probeer met voorbeeld in bijlage op 1 machine de naam van de contact Jeroen te wijzigen, en op een andere machine de contact Fred. Het wijzigen van de global of van de naam van de contact veroorzaakt een foutmelding wegens de record lock. Als de op de 2de machine in de tabel Globals een nieuwe record wordt gemaakt, dan kan uiteraard de waarde van het globale veld gewijzigd worden, én de naam van Fred.

MultiUser.fp7

  • 0
Posted

Jeroen, uiteraard dit is duidelijk. Het idee is meer, wellicht voor een ander topic, hoe gedragen die globale velden zich eigenlijk...

Als voorbeeld: stel je heb een multi user applicatie met veel records welke een globaal veld hebben. Je wijzigt dit globaal veld in 1 van de records. Het record wat je wijzigt staat, uiteraard, gelocked. Echter, het wijzigen van een globaal veld raakt natuurlijk alle records. Worden deze dan stuk voor stuk na bevestiging (welliswaar in sneltreinvaart) even gelocked of gaat Filemaker hier anders mee om?

  • 0
Posted

Ik dacht dat een global locally stored is, dus niet op record niveau. Een global wordt ook behouden als alle records deleted zijn. Die valt m.i. dus buiten het werkingsgebied van de record lock.

  • 0
Posted

Owkeej, stap één is gelukt, nu komen de uitbreidingsvragen voor de specialisten.

 

In vorige voorbeelden gingen we uit van twee tabellen die aan elkaar gelinkt zijn. In mijn database werkt dat prima.

 

Nu kom ik echter op een iets complexer vraagje: 3 tabellen.

- tblLeerlingen (leerlingID, naam)

- tblLeerlingBegeleiding (leerlingbegeleidingID, datum, vakID)

- tblVakken (vakID, vaknaam)

 

De lay-out is gebaseerd op de tabel leerlingen. In een portal staan, per leerling, de begeleidingen. Eén veld in de portal verwijst naar de vaknaam.

 

Nu wil ik op die lay-out een filterveld zetten op basis van vak.

 

Dus: leerling X heeft 5 begeleidingen, ik wil enkel die van wiskunde zien.

 

Wie helpt?

  • 0
Posted

Ok, dit is inderdaad niet voor de hand liggend.

 

Voor zover ik weet gaat dit enkel als je ervoor zorgt dat je dat veld ook in de tabel begeleiding hebt staan, nu dit geld natuurlijk enkel voor 1 op 1 relaties (wat bij u niet het geval zal zijn vrees ik, daar er meerdere vakrecords zijn voor 1 begeleiding record...).

 

Indien het wel 1 op 1 is kan je in de tabel begeleiding met een lookupfield werken die de waarde opzoekt in de vakken tabel...

 

Hopelijk kan je hier al mee verder!

 

Mvg

  • 0
Posted

AIAIAI, daar had ik al schrik voor...

 

Nu nog niet gepanikeerd...

 

Wat je dan best doet is je portal baseren op het laagste niveau (daar je anders niet voor alle begeleidingsrecords alle vakrecords gaat kunnen bekijken...)

 

Nu als je de portal op het laagste niveau hebt gebaseerd kan je wel weer mijn vorige hint gebruiken, want dan is het wel 1 op 1 neem ik aan???

 

Voor elke vakrecord is slechts 1 begeleidingsrecord?

 

Hopelijk kan je hiermee aan de slag, zoniet post dan je filemaker file eventjes dan kunnen we er eens naar kijken!

 

Mvg

  • 0
Posted

Ook weer helaas: elk begeleidingsrecord heeft één vak record, maar een vakrecord kan meerdere begeleidingsrecords hebben.

 

Een leerling kan namelijk meerdere dagen begeleiding van hetzelfde vak hebben. En uiteraard zijn er ook meerdere leerlingen.

 

Ik zal een demo-bestand maken, want het systeem bestaat uit meerdere bestanden die gekoppeld zijn.

  • 0
Posted

Mis ik iets als ik volgende simpele oplossing voorstel:

 

- Maak een global gVakID in tblLeerlingen

- Je portal is gebaseerd op een TO van tblBegeleidingen

- De relatie tss de TO van tblLeerlingen en deze TO is multi-predicate op basis van gelijkheid tss gVakID en LeerlingID in tblLeerlingen enerzijds en VakID en LeerlingID in tblBegeleidingen anderzijds.

- maak een value list aan met als eerste waarde VakID en tweede waarde Vaknaam, en gebruik deze bv. in een checkbox op je layout om de gebruiker te laten filteren

 

?

  • 0
Posted

Euh, kijk naar de posts in het begin van deze draad...

 

Persoonlijk hou ik er niet van om de dingen nodeloos ingewikkeld te maken met extra calc velden en zo, en vaak kies ik er voor om gewoon een knop 'Alle' te maken, die alle checkbox opties aanvinkt. Tip: gebruik de List() functie om alle VakID's op te halen.

  • 0
Posted

Zelfs met de vorige posts kom ik er niet uit.

 

In bijlage het probleem. De filterlijst toont nu enkel de nummers van de vakken. Uiteraard wil ik graag de namen van de vakken tonen ipv van de nummers.

 

De optie van de checkboxen kan, alleen wil ik wat "uniformiteit" in het programma stoppen door overal die drop down te gebruiken. Mijn gebruikers zijn -net zoals ik- niet altijd van de slimste. Duidelijkheid geboden dus.

BegeleidingDemo.fp7

  • 0
Posted

Hoi, je was er wel bijna. Er is geen enkele reden om je waardelijst met Id's en vaknamen NIET op de brontabel (tblBegeleiding) zelf te baseren. Verder heb je de keuze om enkel de 2de waarde te tonen en niet de eerste. Je moet nog wel steeds checkboxes of een popup list gebruiken, wil je na selectie de vaknaam en niet het id nummer zien. Er bestaan wel truuks met een calc veld om dat op te lossen. Zie voorbeeld

BegeleidingDemo.fp7

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