Ga naar inhoud
  • 0

Portaal filteren


elmystica

Vraag

Ik heb een table met een hoop velden. Sommige zijn eenvoudig, zoals prijzen, andere zijn value lists gebaseerd op andere tables, nog andere zijn radio buttons of check boxes.

 

Ik heb een tweede table, een interfacetable, waarop voor alle velden ook een veld aanwezig is.

Op de layout zitten alle velden, maar wel allemaal als checkboxen omdat er meerdere waarden gekozen mogen worden.

 

Nu wil ik bvb in de layout een portaal met alle keuzes filteren.

Hoe filter je op basis van meerdere waarden voor 1 veld?

 

Of kan ik meerdere waarden kiezen voor bvb relaties en dan op basis van een nieuwe tabel een layout opbouwen?

 

Heb in bijlage een kleine database als voorbeeld gestoken...

autostock.fmp12

Link naar reactie

4 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Je zou het met sql kunnen doen. Ik heb jouw bestandje een klein beetje uitgebreid met 1 calc-veld en 2 TOC's

 

De relatie wordt gemaakt met het sql-result.

 

Het sql-result wordt berekend met de velden mét een waarde als AND en de waarden IN die velden als OR. Een leeg veld wordt genegeerd en als alle velden leeg blijven, dan worden alle subrecords getoond.

autostock_sql.fmp12

Link naar reactie
  • 0

Dit is schitterend!

Dat zet me aan tot terug compleet nieuwe mindsets!

 

Een domme vraag, misschien, maar bij materiaal heb ik selectievakjes staan.

Bijgevolg kan een record 2 materialen hebben (de gele Alfa Romeo heeft bijvoorbeeld Massief en Semi Nylor staan).

Maar via die sql krijg ik die niet. Kan ik die parameters bvb gaan loopen?

Link naar reactie
  • 0

Je zou

If ( zoekpagina::materiaal ≠ "" ; " Lower ( materiaal ) IN('" & Substitute ( Lower ( zoekpagina::materiaal ) ; [ ¶ ; "','" ] ) & "')" ) ; 

kunnen wijzigen in

If ( zoekpagina::materiaal ≠ "" ; 
Substitute ( 
	List ( 
		If ( GetValue ( zoekpagina::materiaal ; 1 ) ≠ "" ; " Lower ( materiaal ) LIKE '%" & GetValue ( Lower ( zoekpagina::materiaal ) ; 1 )  & "%' " ) ; 
		If ( GetValue ( zoekpagina::materiaal ; 2 ) ≠ "" ; " Lower ( materiaal ) LIKE '%" & GetValue ( Lower ( zoekpagina::materiaal ) ; 2 )  & "%' " ) ; 
		If ( GetValue ( zoekpagina::materiaal ; 3 ) ≠ "" ; " Lower ( materiaal ) LIKE '%" & GetValue ( Lower ( zoekpagina::materiaal ) ; 3 )  & "%' " ) ; 
		If ( GetValue ( zoekpagina::materiaal ; 4 ) ≠ "" ; " Lower ( materiaal ) LIKE '%" & GetValue ( Lower ( zoekpagina::materiaal ) ; 4 )  & "%' " ) )
	; [ ¶ ; " OR " ] ) ) ; 

Het probleem dat je echter dan krijgt is dat wanneer je "Nylor" gebruikt, dan eveneens de waarde "Semi Nylor" wordt getoond. Je dan overal de waarde "Nylor" moeten vervangen voor "Full Nylor" of "Standard Nylor" o.i.d. Hetzelfde treed op wanneer je bijvoorbeeld bij kleuren Blauw, Donker blauw en Donkerblauw zou hebben. Dus dit is dan eigenlijk niet zo'n goede methode

 

Strikt genomen mag een willekeurige eigenschap ook maar één waarde bevatten en dus zou je voor je eigen gemak beter wanneer een tweede materiaal kan worden gebruikt dat ook in een tweede kolom moeten zetten. Voor gebruikers is dat natuurlijk enorm onhandig, dus je zou dan je kolom "materiaal" in meerdere (bijvoorbeeld 2) kolommen uiteen kunnen rafelen door daar evenzovele berekende velden voor te maken met materiaal1 = GetValue ( materiaal ; 1 ) resp. materiaal2 = GetValue ( materiaal ; 2 ), etc. Je SQL aanpassen wordt dan een stuk eenvoudiger:

If ( zoekpagina::materiaal ≠ "" ; " Lower ( materiaal ) IN('" & Substitute ( Lower ( zoekpagina::materiaal ) ; [ ¶ ; "','" ] ) & "')" ) ; 

kan je dan wijzigen in:

If ( zoekpagina::materiaal ≠ "" ; "( Lower ( materiaal1 ) IN('" & Substitute ( Lower ( zoekpagina::materiaal ) ; [ ¶ ; "','" ] ) & "') OR Lower ( materiaal2 ) IN('" & Substitute ( Lower ( zoekpagina::materiaal ) ; [ ¶ ; "','" ] ) & "'))" ) ; 

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