Jump to content
  • 0

Portaal filteren


elmystica

Question

Posted

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

4 answers to this question

Recommended Posts

  • 0
Posted

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

  • 0
Posted

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?

  • 0
Posted

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 ) ; [ ¶ ; "','" ] ) & "'))" ) ; 

  • 0
Posted

Normaal zou ik voor zoiets liefst met ID's werken (zoals de merken, bvb), maar helaas moet dit op een bestaande database verder gebouwd worden.

Die is al zò complex en zo non-conform opgebouwd dat dat niet meer evident is, vrees ik.

 

Thanks, ik bekijk even wat ik kan doen binnen de huidige context!

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