zoekfunctie in formulier

Status
Niet open voor verdere reacties.

Sofie_DB

Gebruiker
Lid geworden
21 apr 2005
Berichten
7
Hallo,

Een korte schets: Ik heb een database gemaakt van vormingsmaterialen (video's, cursussen, enz.) Ik heb aan de materialen verschillende trefwoorden toegekend (om later te kunnen zoeken op trefwoord).
Ik heb dus 3 tabellen:
1. een tabel 'titels'
2. een tabel 'trefwoorden'
3. een kruistabel met de Idtitels en Idtrefwoorden

Deze drie tabellen zijn gerelateerd.
Wanneer ik op deze tabellen een gewone selectiequery uitvoer (met als trefwoordcriterium 'communicatie'), dan werkt alles perfect, ik krijg een overzicht van alle materialen waaraan dit trefwoord is toegekend.

Nu wil ik echter een knop op het formulier zetten waarmee ik kan zoeken op trefwoord. Het criterium kan ik dus wel niet op voorhand bepalen, het moet eigenlijk een variabele zijn.

Een druk op de knop zou dan (indien mogelijk) een zoek-dialoogvenstertje tevoorschijn moeten toveren waarin een criterium ingegeven kan worden.

Ik heb mij al suf gezocht!

(bij een niet-gerelateerde tabel werkte dat perfect via Macro-> filter toepassen) maar nu ik met die twee tabellen + kruistabel werk krijg ik het niet voor elkaar...

iemand een idee?

Alvast bedankt!
 
ter volledigheid...

één materiaal heeft dus verschillende trefwoorden:

vb. video over 'dementie' heeft de trefwoorden:
- dementie
- veroudering
- ziekte
- gezondheid


:)
 
zie zoekscherm ontwerpen

Een tijdje geleden heb ik antwoord gegeven op de vraag hoe een zoekscherm te ontwerpen. Dat is volgens mij wat je zoekt. Mocht je het niet kunnen vinden dan hoor ik het wel. Suc7
 
Ik heb jouw reactie gevonden. Nu wou ik nog een aantal dingen vragen:

- op dit moment staan de trefwoorden niet in mijn formulier. Dit is dus noodzakelijk voor een zoekfunctie?

- als ik de trefwoorden in mijn formulier zet, zijn dit verschillende velden: trefwoord1, trefwoord2, trefwoord3, enz. juist?
Kan access zoeken op één van de trefwoorden die in hetzelfde veld staan?

vb. video over roken heeft de volgende trefwoorden: gezondheid, roken, ******, verslaving.

Kan Access deze record vinden als ik als zoekterm enkel 'verslaving' ingeef?

Indien de trefwoorden toch elk een eigen veld moeten hebben, hoe verwerk ik dit dan in hetgeen jij daar weergeeft (Forms![naam 1e formulier]![zoekrecord]

Heb ik er goed aan gedaan een kruistabel te maken?

Veel vragen... :confused:

Ze hadden me gewaarschuwd dat Access een moeilijk programma was en ik wou het niet geloven...:rolleyes:

bedankt voor je hulp!
 
Nee ACCESS is simpel

Als je maar even volhoudt (wordt het simpel!).
Vraag 1: Velden waarop je zoekt hoeven niet noodzakelijk in je formulier (zie verder)
Vraag 2: ACCESS kan zoeken in alle velden die je opgeeft (onbeperkt). Hoezo meerdere trefwoorden in 1 veld?
Vraag 3: Mbt kruistabellen heb ik geen ervaring.

Wat je moet doen: Het formulier wat je uiteindelijk opent baseer je op een querie met daarin opgenomen alle velden van die tabel, inclusief de velden trefwoord 1 t/m 6 (effect is hetzelfde als het baseren op de tabel maar de querie geeft je meer mogelijkheden, let maar op). Nu zet je in de querie, in ieder veld waarin je wilt zoeken, de verwijzing: Forms![naam 1e formulier]![zoekitem]. LET OP. Bij ieder veld zet je achter criteria de verwijzing een rij lager ( van links naar rechts) o.a. in de velden trefwoord 1, trefwoord 2 enz. ACCESS zal in al deze velden ( en je kunt geloof ik in 10 velden tegelijk criteria ingeven) zoeken waardoor jouw record (video over roken) altijd gevonden wordt. ACCESS vindt het trefwoord OF in trefwoord 1 OF in trefwoord 2 enz. Zou je de criteria in dezelfde rij plaatsen bij de verschillende velden zoekt ACCESS naar records met het trefwoord in trefwoord 1 EN trefwoord 2 EN in trefwoord 3 enz. Hieraan voldoet geen enkel record.
Wil je de trefwoorden NIET zien in je formulier dan neem je de velden gewoon niet op in dit formulier. Zal bij de zoeker wel vragen oproepen ( ik tik verslaving in en zie deze term nergens in mijn formulier).
Dezelfde querie gebruik je EN om het aantal hits te tellen EN als basis om je formulier te openen en de hits te laten zien.
Kun je met zes trefwoorden per record toe dan zou ik gewoon 6 velden opnemen in je tabel (trafwoord 1 t/m 6). Wil je onbeperkt trefwoorden er aanhangen heb ik nog wel een andere optie (laat maar weten of je dat nog ziet zitten).
p.s. Bij de omschreven verwijzing ga ik er van uit dat het zoekitem in zijn geheel in de betreffende velden staat. Wat vaak nog beter is het criterium: Like”*”& [Forms]![naam 1e formulier]![zoekitem] &”*”. Nu kun je volstaan met een gedeelte van het zoekitem (in jouw voorbeeld: "slaving" levert de video roken op). Suc7
 
Laatst bewerkt:
Het lukt mij niet...:(

Ik begrijp niet goed wat je bedoelt in de reactie op Mulderm met: "dit bereik je door in ontwerpweergave Formulier de recordbron weg te halen op de 3...". Wat bedoel je met de 3?
Ik heb een kopie gemaakt van het bestaande formulier...

Ik probeer het nog even verder uit te zoeken, ik geef het nog lang niet op! (wel blij dat je mij een beetje op weg wil helpen) :thumb:

Toch nog even over mijn kruistabel... Als ik een query uitvoer op mijn 3 tabellen: 'titels', 'trefwoorden' en de 'kruistabel van die twee', dan lukt het perfect! Hij zoekt en vindt!

Dit is de SQL-weergave van mijn query:

SELECT titels.titels, titels.[soort materiaal], titels.code, [lijst van trefwoorden].trefwoorden
FROM titels INNER JOIN ([lijst van trefwoorden] INNER JOIN [kruistabel Id] ON [lijst van trefwoorden].Id = [kruistabel Id].Idtrefwoord) ON titels.Idtitels = [kruistabel Id].Idtitel
WHERE ((([lijst van trefwoorden].trefwoorden)="gezondheid"));


Dit is eigenlijk de opdracht die ik aan een knop in mijn formulier wil hangen, maar dat lukt dus niet... (krijg bijvoorbeeld de melding dat het te lang is?!?)
(formulier is gebruiksvriendelijker voor de zoekers dan het maken van een query).

Maar hoe???

Maar ik wil het nog steeds op jouw manier proberen hoor, Anne-Marie
:D

groetjes!
 
nog even over die SQL-dinges...

in mijn formulier zou de waarde "gezondheid" een variabele moeten zijn, ik zou een soort invulveld willen waarin ik eender welk trefwoord kan invullen...

:)
 
het gaat niet om de 3 maar om de ...

Als je een formulier opent in de ontwerpweergave haal je bij recordbron de tabel weg (ik neem aan dat je die gebaseerd hebt op een tabel). Als je nu rechts van het pijltje gaat staan verschijnt er een vlakje met DRIE PUNTJES (...). Klik daar op. Nu kun je boven in het scherm de tabel selecteren waarop je het formulier gebaseerd wilt hebben. Dubbelklik op de tabel (of sleep) en alle velden verschijnen onder in het scherm. Bij ieder veld zie je nu criteria staan. Daar moet je de verwijzing in zetten zoals eerder beschreven.
Vind je dit allemaal toch te moeilijk maak dan gewoon een selectiequerie waarin je alle velden van je tabel opneemt (naam: Qtabel). Selecteer nu bij recordbron van je formulier Qtabel (ipv de tabel) en je hebt hetzelfde effect. Nu nog de criteria!
Mbt SQL heb ik (te) weinig kaas gegeten. Misschien iemand anders. In het uiterste geval misschien een idee een uitgeklede versie van je mdb (alleen formulier en tabel) gezipt hier te plaatsen. Suc8
 
Laatst bewerkt:
Dag Anne-Marie,

Het is gelukt! Ik heb er even over gedaan voordat ik je kon volgen (en dat lag geheel aan mij, echt!) maar nu is het gelukt!

Heel erg bedankt voor je hulp!!

:thumb:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan