Doorzoeken alle velden

  • Onderwerp starter Onderwerp starter frin
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

frin

Gebruiker
Lid geworden
17 feb 2005
Berichten
259
Ik heb een tabel met meerdere meldingsdatums voor één bepaald probleem.
bv rec 1
datum 1 = 15/07/06
datum 2 = 16/07/06
rec 2
datum 1 = 14/07/06
datum 2 = 15/07/06
datum 3 = 20/07/06

Nu geef ik via een popup een datum in die alle record dient weer te geven met ergens een veld dat overeenstemt met deze datum.

In bijlage een beginsel
 

Bijlagen

Moet je een tussenquery gaan gebruiken. Gebruik makend van jou voorbeeld:

SELECT DISTINCT ID, datDatum FROM
(
SELECT Tabel1.Id AS ID, Tabel1.dt1 As datDatum
FROM Tabel1
UNION
SELECT Tabel1.Id AS ID, Tabel1.dt2 As datDatum
FROM Tabel1
UNION
SELECT Tabel1.Id AS ID, Tabel1.dt3 As datDatum
FROM Tabel1
UNION
SELECT Tabel1.Id AS ID, Tabel1.dt4 As datDatum
FROM Tabel1
);

Met behulp van deze tussenquery kun je alle ID's vinden van records met een bepaalde datum erin. Als je dan alleen die ID's in je resultaat formulier laat zien doet ie precies wat je wilt.
 
Bartuls zei:
Moet je een tussenquery gaan gebruiken. Gebruik makend van jou voorbeeld:

SELECT DISTINCT ID, datDatum FROM
(
SELECT Tabel1.Id AS ID, Tabel1.dt1 As datDatum
FROM Tabel1
UNION
SELECT Tabel1.Id AS ID, Tabel1.dt2 As datDatum
FROM Tabel1
UNION
SELECT Tabel1.Id AS ID, Tabel1.dt3 As datDatum
FROM Tabel1
UNION
SELECT Tabel1.Id AS ID, Tabel1.dt4 As datDatum
FROM Tabel1
);

Met behulp van deze tussenquery kun je alle ID's vinden van records met een bepaalde datum erin. Als je dan alleen die ID's in je resultaat formulier laat zien doet ie precies wat je wilt.

Hoe maak ik deze tussenquery ?
Of dien ik een script-module te maken ?


Alvast bedankt
 
De query werkt als ik op iedere rij criteria de voorwaarde plaats.
In mijn applicatie zit ik met 20 datumvelden die moeten doorzocht worden. Probleem de query-ontwerpweergave biedt maar 9 rijen voor criteria.
Kan ik dat ook oplossen door de criteria per kolom naast mekaar te plaatsen of .....
 

Bijlagen

  • qry.JPG
    qry.JPG
    97,1 KB · Weergaven: 27
Dit is niet de manier waarop je dit soort problemen in een relationele database oplost.
Wat je in dit soort gevallen moet doen is de wijze van opslaan veranderen.

tblDatums
ID (autonummer)
fldDatum (date/time)
fldSoortDatum (long)

tblSoortDatum
ID (autonummer)
fldOmschrijving (Tekst 50)

In de tabel tblDatums leg je dus maar 1 datum vast, bij die datum leg je vast wat voor soort datum het is (één van die 20 datums van jou dus).

In de tabel tblSoortDatum leg je vast wat voor soorten datums er zijn.

Het opzetten van een database op deze manier wordt ook wel normaliseren genoemd.
Een genormaliseerde database is eenvoudiger te onderhouden en bevat geen onnodige gegevens (dubbel oplsaan wordt voorkomen) of onnodige lege velden.
Meer over het normaliseren van een database kun je hier vinden:
http://www.sum-it.nl/cursus/dbdesign/hollands/logis010.php3
http://home.planet.nl/~digihans/pc_help/access/tabel_query.htm
http://home.student.utwente.nl/s.p.ekkebus/portfolio/files/Paper_DB_normalisation.pdf

Het enige alternatief is het doen op de manier die ik al eerder aangegeven heb.
Je moet dan je query niet op de grafiesche manier die jij al kent opbouwen, maar met behulp van SQL.
In principe is elke query een stukje SQL. Access maakt het je makkelijk door het SQL statement op een grafische manier te presenteren, dat is wat jij gewend bent.
Je kunt van elke query de SQL zien door de query te openen en in menu Beeld de optie SQL te kiezen. Je ziet dan de SQL van de query en kunt deze aanpassen.
 
Dat lukt prima, ook al is dit maar tijdelijk.
Zodra ik tijd heb probeer ik de database te normaliseren.
Bedankt, we zijn weer iets slimmer geworden.

:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan