[Access] Query maken.

Pagina: 1
Acties:

  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
Hallo, ik zal even uitleggen waar het over gaat. Het gaat over een database die ik moet maken, voor alle werkstations, printers en werknemers (de werknemers die van de bepaalde printer of werkstation gebruik maken).

Nu heb ik dus 3 tabellen.

tblPrinters, met daarin het veld printer printernaam als primaire sleutel, het veld lokaal, het veld type en netwerk (ja/nee)

tblWerknemers, met daarin de velden: lokaal, naam (prim. sleutel), werknemernummer

tblWerkstations, serienummers (prim sleutel), pcnaam en lokaal.

De 3 "lokaal" velden zijn aan elkaar gekoppeld via een relatie. (tblPrinters -> tblWerkstations -> tblWerknemers)

Hiervan wil ik dus een query maken, zodat ik per lokaal kan zien welke computers en printers er staan, en welke werknemers van deze computers en printers gebruik maken.

Heeft iemand een goed idee hoe ik dit het beste kan uitvoeren? Ik heb het zelf al verschillende dingen geprobeert, maar ik kom er niet uit. Wie kan mij hiermee helpen?

Verwijderd

Tip: ga eens iets lezen over normaliseren!

Ik snap wat je probeert te doen, maar je datamodel lijkt nergens op. Als je daar in deze fase niet iets aan doet, dan ga je in de toekomst alleen maar tegen de beperkingen aanlopen.

Ik wil alvast wel even 2 gaten schieten in je huidige opzet:
1. Hoe vul je lokaal? Is lok.1 hetzelfde als lok. 1 en hetzelfde als lokaal 1?
2. In jouw model is naam de primairy key. Heb je er al aan gedacht dat er meerdere mensen met dezelfde naam rondlopen? (En ook al is dat bij jullie nu niet zo, iets zegt me dat als je het zo opzet er binnen afzienbare tijd iemand wordt aangenomen met een identieke naam :) )

  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
Bedankt voor je reactie :)
Verwijderd schreef op donderdag 28 april 2005 @ 09:40:
1. Hoe vul je lokaal? Is lok.1 hetzelfde als lok. 1 en hetzelfde als lokaal 1?
Dat lokaal is niet zo'n groot probleem.. hier hebben alle lokalen een nummer, zoals bijvoorbeeld lokaal 1.19
Verwijderd schreef op donderdag 28 april 2005 @ 09:40:
2. In jouw model is naam de primairy key. Heb je er al aan gedacht dat er meerdere mensen met dezelfde naam rondlopen? (En ook al is dat bij jullie nu niet zo, iets zegt me dat als je het zo opzet er binnen afzienbare tijd iemand wordt aangenomen met een identieke naam :) )
Ja daar heb ik ook aan gedacht. Daarom is het misschien wel verstandig om de prim. key op het werknemernummer te zetten.

Verwijderd

WASonline schreef op donderdag 28 april 2005 @ 09:55:

[...]

Dat lokaal is niet zo'n groot probleem.. hier hebben alle lokalen een nummer, zoals bijvoorbeeld lokaal 1.19

[...]
Wat in dit geval het verstandigst zou zijn is dat je dus een aparte tabel Lokalen maakt met daarin een LokaalID en een LokaalNaam. Vervolgens koppel je de andere tabellen op LokaalID.

Je query wordt dan erg simpel: alles selecteren waar lokaalid = 1

Ik wil je nogmaals sterk adviseren toch nog wat te lezen over normaliseren.

Ook zoeken met google op normaliseren zal wel wat relevante hits opleveren.

  • Boss
  • Registratie: September 1999
  • Laatst online: 14:24

Boss

+1 Overgewaardeerd

dus... 1 werknemer zit altijd maar achter 1 computer? en 1 computer print altijd maar op 1 printer? Of mis ik nog een paar tabellen?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
oke bedankt voor de tip met dat normaliseren.. nu begrijp ik toch wel wat beter hoe het allemaal gaat met die ID velden etc.
Boss schreef op donderdag 28 april 2005 @ 11:30:
dus... 1 werknemer zit altijd maar achter 1 computer? en 1 computer print altijd maar op 1 printer? Of mis ik nog een paar tabellen?
normaal gesproken zijn er (natuurlijk) meerdere mensen op meerdere computers en op meerdere printers. Ik denk dat ik alle werknemers (en printers en werkstations) ook een ID ga geven, zodat ik deze bij de werkstations en printers kan zetten, alleen ik ben nog een beetje aan het uitvinden hoe ik dat allemaal moet doen.

  • Boss
  • Registratie: September 1999
  • Laatst online: 14:24

Boss

+1 Overgewaardeerd

Dat zal met een 'tussen' tabelletje moeten. Dus 1 tabel met WerknemerID en ComputerID.

Al vraag ik me af wat je met deze informatie wilt gaan doen. Bovendien (ik weet niet wat voor netwerk je hebt draaien, maar stel dat je het een beetje op orde hebt) kan je deze informatie waarschijnlijk ook wel uit je netwerk beheer tools trekken?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
dit is mijn stageopdracht :) het is gewoon een middel om snel te kunnen zien welke computers waar in gebruik zijn, en door wie ze in gebruik zijn. Dit kun je natuurlijk ook een groot gedeelte van deze info uit de AD halen enzo, en welke computers waar staan (ou's etc) maar dit is puur om de overzichtelijkheid van het netwerk te verhogen. de meeste mensen hebben geen vaste werkplek dusja.

serienummers van pc's staan trouwens niet in het AD.

[ Voor 17% gewijzigd door WASonline op 28-04-2005 13:45 ]


  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
momenteel heb ik 6 tabellen.
- tblLokaal
- tblPrinters
- tblTussentabel
- tblWerknemers
- tblWerkstations

De relaties zijn de ID velden van lokaal, deze zitten in elke tabel en zijn allemaal met elkaar verbonden. Dus tblprinters Lokaal -> tblWerkstations Lokaal -> tblWerknemers Lokaal -> tblLokaal - lokaal.

Mijn probleem zijn nu de query's..
Ik heb nu query's gemaakt voor de Printers, en voor de Werkstations. dit is de tabel tblPrinters (Printer ID, Printernaam, Serienummer, Lokaal, Type, Netwerk) met hierachter de tabel Werknemers (Werknemernummer, Lokaal, Naam)

Dit is eigenlijk alles wat ik wil hebben voor de printers, een query waarbij ik de info van de printers kan intypen, samen met de werknemers. Alleen... nu kan ik niets invullen bij die query? kan dat liggen aan die relaties ofzo?

trouwens.. hoe werkt dat eigenlijk met die tussentabel? kan ik dan wel meerdere velden met medewerkers invullen?

Verwijderd

WASonline schreef op donderdag 28 april 2005 @ 14:03:

De relaties zijn de ID velden van lokaal, deze zitten in elke tabel en zijn allemaal met elkaar verbonden. Dus tblprinters Lokaal -> tblWerkstations Lokaal -> tblWerknemers Lokaal -> tblLokaal - lokaal.
Aaaarghhh, ho wacht, stop deze show!

Als je het zo opzet kun je dus alleen maar een werkstation hebben in een lokaal waar al een werknemer op staat. Gaat niet echt werken zo.

Zie je lokaal als centraal punt binnen je gegevensmodel en probeer dan eens logisch te redeneren hoe je de relaties als beste zou kunnen leggen.

  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
oke.. bedankt voor de reactie..

de relaties heb ik nu een beetje aangepast. nu zijn alle tabellen aan lokaal gelinkt door middel van een relatie. (tblPrinters, tblWerkstations en tblWerknemers).. ik hoop dat je het op deze manier bedoelt

Verwijderd

Ja idd. Je query wordt dan volgens mij ook een stuk eenvoudiger. Volgens mij moet je er door logisch na te denken verder wel redelijk uit kunnen komen. Ik adviseer je nog steeds om te blijven lezen over normaliseren. Je leert daar erg veel van en de voorbeelden die voorbij komen zullen je ongetwijfeld meer inzicht geven in je probleemsituatie. Ik wens je verder veel succes, ik ga er even een lang weekend tussenuit :) dus ik lees dit topic maandagavond pas weer.

  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
veel plezier op je weekend er tussenuit :) ik ga nog wat meer lezen over normaliseren en nog wat aan die database sleutelen

  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
het idee is weer een beetje verandert. nu wordt de medewerker ingevuld per lokaal, en niet per werkstation en per printer. Dit heb ik zo gekozen zodat de tabellen en query's een stuk eenvoudiger worden, anders zou een werkstation met meerdere medewerkers (en die zijn hier veel), ook meerdere keren voorkomen in de query. Dit werkt op dit moment allemaal (bedankt voor de info :) )

maar nu wil ik graag een soort van samenvattende query maken, zodat ik kan zien per lokaal welke werkstations er staan, de printers, en de medewerkers die in het lokaal werken.
Alleen nu krijg ik weer hetzelfde probleem bij mijn selectiequery, en dat is dat in een lokaal waar 4 medewerkers werken, 2 werkstations staan en 1 printer, er 8 records onstaan, waar dus de printer 8x er staat, alle medewerkers 2x en alle pc's 4x.

Nu wil ik dus graag een query maken, waar alle 'uitslagen' in staan van mijn andere query's, en waar alle records van de andere query's 1x in staan (nu wordt in mijn selectiequery bijvoorbeeld de printer 8x gegeven, omdat er in totaal in de query 8 records zijn), dus dan zou ik graag willen dat er dan 7 velden van de printer leeg zijn.

Is dit mogelijk met een selectiequery of met een ander soort query?

Ik hoop dat jullie op deze manier mijn probleem begrijpen.

Verwijderd

Wellicht is het een idee om niet alles in 1 query te doen. Je wilt een overzicht voor elke categorie per lokaal.

In Access kun je met rapporten zoiets wel maken.

Wil je het toch in 1 query, kijk dan eens naar de UNION operator. Hiermee kun je meerdere SELECT queries aan elkaar knopen. Let er daarbij wel op dat het aantal velden en de gegevenstypen in elke query gelijk dienen te zijn.

  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
kijk de opdracht is eigenlijk heel simpel.. de opdracht is, dat er in 1 oogopslag gezien kan worden, welke werkstations, printers en werknemers er bij een lokaal horen, als je het lokaal invuld (criteria). Dat heb ik nu bereikt, alleen die 3 dingen staan in aparte query's. Dus nu wil ik ze samenvoegen, maar dat gaat niet in een query, door dat bovenstaande probleem. Is er misschien nog een andere manier om dit te bereiken? met een rapport krijg ik steeds hetzelfde effect.

  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
oke, ik heb mezelf verdiept in die rapporten. het effect wat ik wil is ermee te bereiken is haalbaar. Alleen helaas, door de subrapporten komt mijn criteria melding 5x (1x per formulier). Dit heb ik op allerlei manieren geprobeert om dit te verhelpen, maar dit gaat niet. Ook heb ik het geprobeert op een andere manier, met een keuzelijst, maar hier kan ik het lokaal ook niet kiezen.

Is er misschien een functie in access waarmee ik in het rapport een woord kan zoeken (lokaal) en dit eventueel zou kunnen gebruiken om het lokaal te vinden in plaats van het criteria veld?

Heeft iemand hier nog andere ideeën voor?

  • WASonline
  • Registratie: Mei 2004
  • Laatst online: 16-11-2025
is er niemand die hier iets vanaf weet?

de database (mocht iemand iets willen proberen ofzo) het draait vooral om rapport2.

http://rapidshare.de/file...5-05-19_-_BACKUP.mdb.html
Pagina: 1