Query die zoekt in fields

Status
Niet open voor verdere reacties.

klablabla

Gebruiker
Lid geworden
28 apr 2008
Berichten
116
Momenteel heb ik een tabel waar o.a. 01naam, 02naam, 03naam enz. staat.
Ook heb ik een login scherm waardoor ik met "Huidigegebruiker()" de ingelogt naam kan achterhalen.

Hoe het werk (heb ik 36 query's nodige) is:

Code:
SELECT TblVTMAfdeling.*
FROM TblVTMAfdeling
WHERE (((TblVTMAfdeling.[01Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[01Invullen])=Yes) AND ((TblVTMAfdeling.[01Goed])=No));

Graag zou ik het volgende doen dat 1 query alle 36 doorzoekt.
zoiets (wel alle 36 ipv 2):
Code:
SELECT TblVTMAfdeling.*
FROM TblVTMAfdeling
WHERE (((TblVTMAfdeling.[01Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[01Invullen])=Yes) AND ((TblVTMAfdeling.[01Goed])=No)) OR (((TblVTMAfdeling.[02Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[02Goed])=Yes) AND ((TblVTMAfdeling.[02Invullen])=No));

Kan dit makkelijker?
 
Laatst bewerkt:
Je vraag blinkt niet uit door duidelijkheid, maar is dit wat je wilt?
Code:
SELECT * FROM TblVTMAfdeling
WHERE (([01Naam]=huidigegebruiker() AND [01Invullen]=-1 AND [01Goed]=0) 
OR ([02Naam]=huidigegebruiker() AND [02Invullen]=-1 AND [02Goed]=0)
OR ([03Naam]=huidigegebruiker() AND [03Invullen]=-1 AND [03Goed]=0)'
......
OR ([035Naam]=huidigegebruiker() AND [035Invullen]=-1 AND [035Goed]=0)
OR ([036Naam]=huidigegebruiker() AND [036Invullen]=-1 AND [036Goed]=0));

Als dit de situatie is, heb je denk ik een probleem, want je gaat (zeker met je eigen stringopbouw, die nogal wat overbodige tekst meeneemt) aardig de kant op waarbij de SQL string te lang wordt om te kunnen worden uitgevoerd. Afgezien daarvan: je database is hopeloos genormaliseerd, als je in je tabel [TblVTMAfdeling] 36 velden hebt zitten die identiek zijn (op de naam na). Bekijk dus eerst je tabelopbouw voordat je hiermee verder gaat, want je zit nu op een kortlopend dood spoor, vrees ik.
 
Het probleem dat ik het zo moet oplossen is dat er uit 1 vergadering diverse actiepunten kunnen komen. Als ik alleen de actiepunten erin zet, kom ik andere problemen tegen. deze oplossing werkt.
IIG voor de kortere oplossing.

mijn oplossing was: (dus jou oplossing scheelt een hoop onnodige sql code)

Code:
SELECT TblVTMAfdeling.*
FROM TblVTMAfdeling
WHERE (((TblVTMAfdeling.[01Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[01Goed])=No) AND ((TblVTMAfdeling.[01Invullen])=Yes)) OR (((TblVTMAfdeling.[02Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[02Goed])=No) AND ((TblVTMAfdeling.[02Invullen])=Yes)) OR (((TblVTMAfdeling.[03Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[03Goed])=No) AND ((TblVTMAfdeling.[03Invullen])=Yes)) OR (((TblVTMAfdeling.[04Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[04Goed])=No) AND ((TblVTMAfdeling.[04Invullen])=Yes)) OR (((TblVTMAfdeling.[05Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[05Goed])=No) AND ((TblVTMAfdeling.[05Invullen])=Yes)) OR (((TblVTMAfdeling.[06Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[06Goed])=No) AND ((TblVTMAfdeling.[06Invullen])=Yes)) OR (((TblVTMAfdeling.[07Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[07Goed])=No) AND ((TblVTMAfdeling.[07Invullen])=Yes)) OR (((TblVTMAfdeling.[08Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[08Goed])=No) AND ((TblVTMAfdeling.[08Invullen])=Yes)) OR (((TblVTMAfdeling.[09Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[09Goed])=No) AND ((TblVTMAfdeling.[09Invullen])=Yes)) OR (((TblVTMAfdeling.[10Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[10Goed])=No) AND ((TblVTMAfdeling.[10Invullen])=Yes)) OR (((TblVTMAfdeling.[11Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[11Goed])=No) AND ((TblVTMAfdeling.[11Invullen])=Yes)) OR (((TblVTMAfdeling.[12Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[12Goed])=No) AND ((TblVTMAfdeling.[12Invullen])=Yes)) OR (((TblVTMAfdeling.[13Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[13Goed])=No) AND ((TblVTMAfdeling.[13Invullen])=Yes)) OR (((TblVTMAfdeling.[14Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[14Goed])=No) AND ((TblVTMAfdeling.[14Invullen])=Yes)) OR (((TblVTMAfdeling.[15Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[15Goed])=No) AND ((TblVTMAfdeling.[15Invullen])=Yes)) OR (((TblVTMAfdeling.[16Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[16Goed])=No) AND ((TblVTMAfdeling.[16Invullen])=Yes)) OR (((TblVTMAfdeling.[17Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[17Goed])=No) AND ((TblVTMAfdeling.[17Invullen])=Yes)) OR (((TblVTMAfdeling.[18Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[18Goed])=No) AND ((TblVTMAfdeling.[18Invullen])=Yes)) OR (((TblVTMAfdeling.[19Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[19Goed])=No) AND ((TblVTMAfdeling.[19Invullen])=Yes)) OR (((TblVTMAfdeling.[20Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[20Goed])=No) AND ((TblVTMAfdeling.[20Invullen])=Yes)) OR (((TblVTMAfdeling.[21Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[21Goed])=No) AND ((TblVTMAfdeling.[21Invullen])=Yes)) OR (((TblVTMAfdeling.[22Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[22Goed])=No) AND ((TblVTMAfdeling.[22Invullen])=Yes)) OR (((TblVTMAfdeling.[23Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[23Goed])=No) AND ((TblVTMAfdeling.[23Invullen])=Yes)) OR (((TblVTMAfdeling.[24Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[24Goed])=No) AND ((TblVTMAfdeling.[24Invullen])=Yes)) OR (((TblVTMAfdeling.[25Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[25Goed])=No) AND ((TblVTMAfdeling.[25Invullen])=Yes)) OR (((TblVTMAfdeling.[26Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[26Goed])=No) AND ((TblVTMAfdeling.[26Invullen])=Yes)) OR (((TblVTMAfdeling.[27Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[27Goed])=No) AND ((TblVTMAfdeling.[27Invullen])=Yes)) OR (((TblVTMAfdeling.[28Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[28Goed])=No) AND ((TblVTMAfdeling.[28Invullen])=Yes)) OR (((TblVTMAfdeling.[29Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[29Goed])=No) AND ((TblVTMAfdeling.[29Invullen])=Yes)) OR (((TblVTMAfdeling.[30Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[30Goed])=No) AND ((TblVTMAfdeling.[30Invullen])=Yes)) OR (((TblVTMAfdeling.[31Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[31Goed])=No) AND ((TblVTMAfdeling.[31Invullen])=Yes)) OR (((TblVTMAfdeling.[32Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[32Goed])=No) AND ((TblVTMAfdeling.[32Invullen])=Yes)) OR (((TblVTMAfdeling.[33Naam])=huidigegebruiker()) AND ((TblVTMAfdeling.[33Goed])=No) AND ((TblVTMAfdeling.[33Invullen])=Yes));
 
Je snapt het punt blijkbaar niet; normaliseren van een database houdt in dat je herhalende velden verplaatst naar een aparte tabel, waarin je een koppeling opneemt naar de hoofdtabel. In jouw geval zouden alle velden met een nummer (ik vermoed dat je actiepunten daar ook bij horen) naar een eigen tabel moeten. Dan ben je ook in één keer klaar met je query, en ben je gelijk verlost van het feit dat je nu maar 33 actiepunten kunt opslaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan