Jump to content
  • 0

Portal search


michiel

Question

Posted

In een portal verschijnen gerelateerde records waarop de volgende velden staan:

 

[naam actviteit] [aanwezig]

 

Gebruikers kunnen in de portal meteen een nieuw gerelateerd record aanmaken.

 

Probleem is nu dat er geen zoekopdrachten uit te voeren zijn in portal.

 

Als ik zoek op [naam activiteit] "knutselen" en [aanwezig] "ja" dan vind ik ook gerelateerde records waarin [naam activiteit] is "frobelen" en [aanwezig] is "ja". Met andere woorden: indien in een portalrow een van de velden voldoet aan een deel van de zoekopdracht dan krijgt ik al een hit, terwijl ik natuurlijk wil zoeken met meerdere zoektermen waaraan allemaal moet worden voldaan!

 

Als ik dezelfde zoekopdracht "direct" uitvoer in de gerelateerde database dan krijg ik wel de goede resultaten

10 answers to this question

Recommended Posts

  • 0
Posted

Mag ik aannemen dat je de resultaten van je zoekopdracht in de portal zelf wil zien opduiken??

 

In dat geval is het eigenlijk geen 'zoeken' maar slechts het definieren van de waarde voor de key die je gebruikt voor je relatie.... duh .. oftewel.

 

- maak in file A een global field [zoek1] en [zoek 2].

- maak in file A een calculatieveld:

[zoek1] & [zoek2] & 1

- maak in file B een calculatieveld:

[naam activiteit]& 1 & ''¶" &

[aanwezigheid]& 1 & ''¶" &

[naam activiteit]& [aanwezig]& 1 & ''¶" &

1

- Leg een relatie tussen de twee calcullatie velden waarop je de portal baseerd.

 

Deze oplossing maakt gebruik van het feit dat je meerdere keys in een relatie kunt gebruiken. Let wel... alleen exacte match werk in dit geval! Met valmenus (met een relatie) kun je dat natuurlijk sterk vereenvoudigen voor de gebruiker...

 

Wil je veel randomer kunnen zoeken, dan moet je het zoekschript in file B schrijven en de gevonden records afvinken en deze in de portal terug laten komen... dat is minder fraai met wel flexibel.

 

Succes!

 

Jeroen Lutmers

  • 0
Posted
Wil je veel randomer kunnen zoeken, dan moet je het zoekschript in file B schrijven en de gevonden records afvinken en deze in de portal terug laten komen... dat is minder fraai met wel flexibel.

 

dit is wel niet bruikbaar in een netwerk!

 

mvg

Stef

  • 0
Posted
dit is wel niet bruikbaar in een netwerk!
Het is dus gewoon niet bruikbaar ;)

 

Voor de topicstarter: misschien moet je eens even wat dingetjes lezen over portals, dan begrijp je waarschijnlijk ook waarom je nu deze denkfout maakt.

  • 0
Posted

... ahh Stef... u heeft natuurlijk gelijk.. dat netwerk dat heb ik er niet bij vermeld maar is redelijk essentieel. (ik ben er dan ook al weer een poosje uit.. :? )

 

Een oplossing dan voor je netwerk... maak een global field in A. Maak script in B die de id.nummers van de gevonden records in deze global stopt gescheiden met een ''¶" (dus global= global & ''¶" & idnummer). Maak nu je relatie van deze global naar het id.nummer in B. Zoeken in een calc.veld in B zou het wonder dan moeten doen.

 

Zie bijlage....

 

Stef.. deze werkt toch wel in een netwerk??!

 

Groet

Jeroen

dbB.fp5

dbA.fp5

  • 0
Posted

Oja... Plaatjesdraaier... dit is waarschijnlijk niet een oplossing in jouw straatje omdat het niet echt lekker werkt met een te grote gevonden reeks... (maar ook dat kunnen we vast wel weer afvangen...

 

;-)

 

Jeroen

  • 0
Posted

Dank voor alle reacties tot nu toe maar ik vrees dat ik niet helemaal duidelijk geweest ben in de posting.

 

Databank A bevat klanten.

 

Databank B bevat activiteiten. Ieder activiteit heeft een aantal eigenschappen. Bijvoorbeeld:

 

brief - geschreven=ja verzonden=nee

fax - geschreven=nee verzonden=nee

 

Tussen A en B bestaat een relationship gebaseerd op ID - nr.

 

De gerelateerde records verschijnen in Portal in Databank A.

 

Ik wil nu dus in A records zoeken waarbij (in B) bepaalde activiteiten zijn ingesteld. Ik voer dus een zoekopdracht in A uit waarbij ik in het portal een zoekwaarde selecteer. Dat werkt prima zolang ik niet wil zoeken op meerdere eigenschappen van een activiteit.

 

B.V. bij een bepaald record zijn twee gerelateerde records met de waarden

brief - gschreven=ja

fax - geschreven=ja

 

In findmodus selecteer in de portal brief en geschreven = ja. De bedoeling is dan dus dat alle records (in A) getoond worden die een gerelateerd record (in B) hebben waarbij activiteit is brief en geschreven= ja

Maar zo werkt het niet: ik vind dan namelijk ook alle gerelateerde records waarbij activiteit= fax en geschreven is ja.

 

Met andere worden: er wordt geen AND seach uitgevoerd maar een OR search.

 

Wat zie ik hier over het hoofd?

  • 0
Posted

Ik heb ooit eens iets gemaakt waar je kon zoeken vanuit de A file op Twee of meerdere waarden in de B file. De And functie...

 

Dit was wel altijd via script.

 

Werking...

Je zoekt in de B file alle records die nieuwe of verandered zijn.

Voor al die records uit de B file moet je een veld (and_seach_Field:TEXT) in de A file opvullen met de ValueListItems( Status(CurrentFileName); "And_search_data" ) waar "And_search_data" een valuelist is over de relatie vanuit A naar B

op deze manier haal je welliswaar maar 1 veld uit de B file over. Daarna zoek je and_search_field door de waarden door spaties te scheiden.

 

Dit heeft wel zijn beprekingen...je kunt niet zoeken (zoals > < >= =< ...) op datum of nummer velden omdat je eigenlijk alles in 1 tekst veld plaatst.

 

 

 

Glenn,

  • 0
Posted

Michiel,

Wat jij kan niet he... wat gebeurt er als je in Find mode komt... dan krijg je een 'leeg record' te zien... zoeken doe je dan in jouw 'ja_nee_veld'. Dat veld zoekt door de gehele B database naar 'Ja's' in dat veld... dus ook Ja's die toevallig aan de Fax hangen.

 

Maar voor het probleem wat je nu beschrijft kun je de oplossing gebruiken die ik je eerder aan de hand deed (zie de eerder gestuurde bijlagen).

Dus gewoon de zoek opdracht in B uitvoeren (let op: In de FIND mode kun je een tweede -of meerdere- zoekopdracht uitvoeren - apple N in findmodus- om je zoekopdracht te verbreden -and- ) en alsnog de idnummers in een relatieveld plaatsen...

 

Groet

Jeroen

  • 0
Posted

Een oplossing dan voor je netwerk... maak een global field in A. Maak script in B die de id.nummers van de gevonden records in deze global stopt gescheiden met een ''¶" (dus global= global & ''¶" & idnummer). Maak nu je relatie van deze global naar het id.nummer in B. Zoeken in een calc.veld in B zou het wonder dan moeten doen.

Stef.. deze werkt toch wel in een netwerk??!

 

Right! Werkt perfect!

 

Ik gebruik ongeveer dezelfde techniek. In plaats van te loopen in de DBB doe ik een "copy all records" (in een layout met alleen het ID of course) en paste ik die terug. Komt op hetzelfde neer.

 

dit is waarschijnlijk niet een oplossing in jouw straatje omdat het niet echt lekker werkt met een te grote gevonden reeks... (maar ook dat kunnen we vast wel weer afvangen...

 

Natuurlijk is dit ook niet waterdicht, maar dat kan je opvangen met een boodschap als "verfijn uw zoekcriteria" bij een te grote reeks.

 

mvg

Stef

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