Variabele Veldnaam in query

Status
Niet open voor verdere reacties.

anietje62

Gebruiker
Lid geworden
1 dec 2006
Berichten
38
Betreft Access 2007
Ik heb op het forum gezocht maar de oplossing niet gevonden.

In een tabel Inventarisatie o.a. de velden Id, Naam, Jaar, week01, week02, week03…..week53. De velden week.. zijn ja/nee velden.

Op het formulier Rapporten:
-keuzelijst KeuzeJaar
-keuzelijst Keuzeweek waarmee gekozen kan worden: week01, week02 .. etc
-verschillende knoppen die rapporten over de week die gekozen wordt in de keuzelijst tevoorschijn moet toveren, gebaseerd op een query met het gekozen jaar en week uit de keuzelijsten op dit formulier.

Dus query1 die zou bestaan uit velden Jaar, Naam, Week01
query2 velden Jaar, Naam, Week02
query3 velden Jaar, Naam, Week03…etc

Veld Jaar: criterium = Forms!Rapporten!Keuzejaar.value (geen probleem)
Maar ik zou graag één query maken met een variabele veldnaam voor de week, afhankelijk van de gekozen waarde van Keuzeweek, waardoor ik niet 53 maal bijna dezelfde query’s hoef te maken om de diverse rapporten te bedienen.
Dus alleen de records van het Jaar uit “Keuzejaar“ en die van “Keuzeweek” met criterium ”Waar” moeten getoond worden.
Dus bijv. alle records van 2016, van week01 en alleen als deze ook aangevinkt zijn.

Heb al op dit forum e.a. oplossingen gezien en heb al diverse dingen geprobeerd:
Rechtstreeks in de query met als veldnaam Forms!Rapporten!Keuzeweek.value geeft alle records en een kolom met expr1: week01 en er wordt niet gekeken of de velden van Week01 Waar zijn.
In de query SQL de code geprobeerd te veranderen
Ook geprobeerd onder de knoppen van de rapporten onder de gebeurtenis met VBA code iets te maken, maar dat haalde ook niets uit, daar ben ik te veel leek voor.

Wie o wie kan me hierbij helpen?
 
In een tabel Inventarisatie o.a. de velden Id, Naam, Jaar, week01, week02, week03…..week53.
Dit is echt (en dan bedoel ik dus héél echt) een hele slechte constructie; dit duidt namelijk op een totaal niet genormaliseerde tabel. Voordat je überhaupt je verdere probleem oplost (wat dan overigens ineens geen probleem meer blijkt te zijn) zou ik eerst de structuur van de tabel/database onder handen nemen.
 
Oké, even wat duidelijker.
Veld naam in tabel Inventarisiatie verwijst naar de tabel medewerkers, waaruit de naam wordt gehaald.
Veld jaar verwijst naar een tabel met enqnummers, waaruit het enquetenummer i.e. jaar wordt gehaald.
De tabel Inventarisatie is de tabel waar alle gegevens in verzameld worden. Het is een soort aanwezigheidsinventarisatie. Iemand is in een bepaald jaar aanwezig in week 3, 6, 10, 12, 13. Een ander in week 1 tm 20 etc.

Ik heb er over na zitten denken hoe dit genormaliseerd zou moeten worden, maar de weken blijven dacht ik toch gewoon aparte gegevensvelden?
Je blijft zitten met de weeknummers.

Een aanwijzing wat ik anders kan doen Michel?
 
Nog wat meer info: per medewerker ook: staanplaats, bevoegdheden, sectie, werkdagen die allemaal uit aparte tabellen gehaald worden. De bedoeling is dat er rapporten gedraaid worden per sectie/ per bevoegdheid/ per staanplaats en/of combinatie ervan wanneer iemand aan of afwezig is in bepaalde weken.
Ik dacht dat dus als eerste duidelijk moet zijn wie er op welke week aanwezig is mbv een query. De rapporten kan ik daarna met andere query's aanpassen.
 
Volgens mij is het allemaal niet zo moeilijk; iemand is aanwezig op een dag. Niemand kan in één keer een hele week aanwezig zijn. Als je alleen geïnteresseerd bent in de weken waarin iemand een keer (minstens één dag) aanwezig is geweest, dan volstaat het om de dagelijkse aanwezigheid te registreren. In die tabel heb je dus genoeg aan een veld MedewerkerID en Datum. En uiteraard wat nog meer van belang is, zoasl staanplaats en bevoegdheden. Hoewel die laatste volgens mij persoonsgebonden is, en dus in de persoonstabel zou moeten staan. Tenzij mensen meerdere bevoegdheden kunnen hebben, en ze per aanwezigheid een andere bevoegdheid uitoefenen.
Je hebt, om het simpel te houden, dus per dag vastgelegd wanneer welke persoon aanwezig is met welke bevoegdheid. Persoon A die aanwezig is geweest in week 3, 6, 10, 12, 13 was dat bijvoorbeeld op 19-1, 11-2, 12-2, 9-3, 22-3, 24-3 en 1-4.
Op basis van die datums bereken je heel simpel het bijbehorende weeknummer in een query. Daarmee heb je de weeknummers per persoon. En moeilijker moet je het vooral niet (willen) maken...
 
Oké, dank je wel Michel. Je hebt me idd op weg geholpen.
Het gaat niet om de dag(en) die ze aanwezig geweest zijn, maar die ze in de toekomst beschikbaar zullen zijn, maar dat zou misschien ook met een datum te ondervangen zijn en dan andersom redeneren.
Ik had ook de bevoegdheden al in de persoonstabel vastgelegd en ja, ze kunnen meerdere bevoegdheden, op verschillende plaatsen etc. hebben. Vrij complex dus. (het gaat om 300+ personen). Maar het start allemaal met die eerste query/lijst.

Nu word het allemaal met de hand gedaan, briefjes of mail inleveren, turflijstjes en echt weken(maanden) werk. Ik was van mening dat het mbv access tenminste gedeeltelijk een stuk sneller zou moeten kunnen.
Mijn bedoeling is dat iedereen de database gebruikt, er een formulier voor hem/haar persoonlijk opent en daarop de weken aanvinkt die hij/zij de komende tijd (en we willen nu naar een inventarisatie van een heel jaar gaan) beschikbaar is.
Dat is allemaal al gelukt, maar wel met 53 aanvinkvakjes op het formulier. Omdat er ook restricties en verplichtingen zijn, mag je niet zo maar alles (niet) aanvinken. Ook dat is me gelukt. Alleen ik liep nu vast op de rapporten, tenminste op de query ervan,
Zoals ik al in de aanvang zei: Alles loopt als ik een query per week maak, alleen dat zou dus 53x de query zijn.....
Ik ga eens nadenken vanavond. :rolleyes:

Maar bedankt Michel!
 
Mijn bedoeling is dat iedereen de database gebruikt, er een formulier voor hem/haar persoonlijk opent en daarop de weken aanvinkt die hij/zij de komende tijd (en we willen nu naar een inventarisatie van een heel jaar gaan) beschikbaar is.
Dan heb je het dus over een planning met twee datums: begin van de week en eind van de week. Dat bepaalt immers dat je er een week bent. Ik zou zo'n planning maken met een formulier waarin je de aanwezige weken op een kalender aanklikt, of een keuzelijst met weeknummers. En daarmee schiet je dan de gegevens in de tabel. En dan is de rest kinderspel.
 
Ik moest er een nachtje over slapen, maar ik zag denk ik ineens het licht.
Net zoals bij een factuur met factuurregels, moet ik een formulier maken met een subformulier.
Hoofdformulier met combinatie naam en jaar zijn als het factuurnummer en daaronder worden in het subformulier de weken gehangen, die gekozen worden uit de tabel Weken, net zoals je artikelen kiest bij de factuurregels in een factuur.
In het subformulier zouden dan waarschijnlijk de restricties gemaakt kunnen worden (net als factuurtotaal etc.).
 
Laatst bewerkt:
Zoiets, ja. Al zie ik het nut van die tabel Weken niet. Weeknummers kun je simpel genereren in een keuzelijst, dus waarom mensen daar een tabel aan opofferen is mij altijd een raadsel :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan