Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[SQL] Access 2007 - Registratietijden Presentie Systeem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Momenteel ben ik samen met iemand anders bezig een presentiesysteem te bouwen met Access 2007. Dit dient gerealiseerd te worden ter toegangscontrole voor een kleine school. Op dit moment is eigenlijk al bijna alles klaar qua structuur en documentatie, maar we zitten nog altijd met een probleem waardoor het hele zaakje eigenlijk nog altijd niet werkend is. Dit probleem heeft te maken met het registreren van de login tijden.

Onderstaand een voorbeeld van de huidige database structuur:

Afbeeldingslocatie: http://www.mind-bending.nl/presentie_absentie_systeem/structuur_database.JPG
Voor iedere cursist, ouder en docent zullen er login en logout tijden moeten worden gegenereerd. Dit ter bevestiging van de presentie/absentie van de desbetreffende personen. Dit willen wij gaan doen door middel van een apart formulier wat naar voren word geroepen door middel van een optie op een schakelbord. Het scherm zal er ongeveer als volgt uit komen te zien:

Afbeeldingslocatie: http://www.mind-bending.nl/presentie_absentie_systeem/inloggen.JPG
Het is de bedoeling dat er in het tekstvak (Invoer persoonsnummer) een bepaalde code komt te staan. Dit is dan het docent_id, leerling_id of het ouder_id. Wanneer er op de knop 'Login' word gedrukt zal er een script moeten afschieten waarbij enerzijds gekeken wordt naar wat er in het tekstvak staat, en daarbij een aantal records in de tabel 'Toegangstijden' worden aanmaakt waarin het volgende vermeld staat:

persoons_id (docent_id, cursist_id, ouder_id)
datum_tijd (de tijd moet tot op de seconde worden afgerond!).
status (was dit een login, of een logout)

Bijvoorbeeld:
Cursist_ID: C0001
Datum_Tijd: 10-04-2009_11:11:11
Status: Login

Afbeeldingslocatie: http://www.mind-bending.nl/presentie_absentie_systeem/toegangstijden_cursist.JPG

Afbeeldingslocatie: http://www.mind-bending.nl/presentie_absentie_systeem/gegevensbladweergave.JPG

Let op: er zullen of drie van dit soort formulieren moeten komen, of er zal op een formulier drie tekstvakken en loginknoppen moeten komen. Alle ID's achter één tekstvak en loginknop hangen is volgens mij niet mogelijk, of veel te ingewikkeld. Er zou dus iets moeten komen als een formulier met drie tekstvakken en drie knoppen (login_leerling, login_docent, login_ouder). Of er zouden drie aparte schermen moeten komen.

Dit is het eigenlijk het enige obstakel dat we tegen zijn gekomen bij het bouwen van de database. Zelf krijgen we dit echter op dit moment niet opgelost omdat het voor ons te ingewikkeld is, en we dit soort complexe zaken niet tijdens de lessen op school hebben behandeld. Nu moeten we echter toch voor school een project afronden waarin dit verwerkt is... We hebben gewoon te weinig kennis van SQL om dit te realiseren, en we hopen dat iemand ons via deze weg toch verder kan helpen!

  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

Waarom überhaupt drie tabellen voor users en niet 1 tabel voor users en 3 tabellen voor rollen met een duidelijke relatie?

Mijn Library Thing catalogus


  • Xiphalon
  • Registratie: Juni 2001
  • Laatst online: 28-11 16:59
Je bent er al bijna: Je geeft al aan dat er een Persoons_Id is, dus er zou ook een tabel Persoon moeten zijn, waarnaar de Cursusten, Docenten en Ouder tabellen verwijzen.

Scheelt ook met dubbele ID's trouwens, als je alleen ID's genereert in de Persoonstabal :)

Verwijderd

Topicstarter
Crayne schreef op vrijdag 10 april 2009 @ 12:13:
Waarom überhaupt drie tabellen voor users en niet 1 tabel voor users en 3 tabellen voor rollen met een duidelijke relatie?
Men wil ook kunnen achterhalen welke leerlingen bij welke ouders horen, welke leerlingen in een bepaalde klas zitten, welke docent bepaalde klassen heeft, etc. Die relaties moeten er gewoonweg zijn omdat er anders te weinig tabellen zijn om de relaties mee te maken.

We hebben deze structuur al een keer voorgelegd bij de opdrachtgevers, en die vonden het ook prima zo.

Of bedoel je dat er nog een extra tabel komt waarin de persoons_id's komen te staan, en deze tabel vervolgens weer wordt gelinkt met de logintijden?

[ Voor 11% gewijzigd door Verwijderd op 10-04-2009 12:27 ]


  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

Verwijderd schreef op vrijdag 10 april 2009 @ 12:24:
[...]
Men wil ook kunnen achterhalen welke leerlingen bij welke ouders horen, welke leerlingen in een bepaalde klas zitten, welke docent bepaalde klassen heeft, etc. Die relaties moeten er gewoonweg zijn omdat er anders te weinig tabellen zijn om de relaties mee te maken.

We hebben deze structuur al een keer voorgelegd bij de opdrachtgevers, en die vonden het ook prima zo.

Of bedoel je dat er nog een extra tabel komt waarin de persoons_id's komen te staan, en deze tabel vervolgens weer wordt gelinkt met de logintijden?
Ik bedoel dat je users en rollen scheidt.

1 tabel met daarin alle users en alle velden die users gemeen hebben. Als alle users maar één rol kunnen hebben in je systeem sla je in deze tabel ook hun rol op. Als users meerdere rollen kunnen hebben, maak je een koppeltabel waarbij je voor elke user en rol een record wegschrijft.

1 tabel met daarin alle velden die betrekking hebben op docenten
1 tabel met daarin alle velden die betrekking hebben op cursisten
1 tabel met daarin alle velden die betrekking hebben op ouders.

De logintijden link je met de users, niet met de rollen. Wanneer welke users met welke rol hebben ingelogd kan je prima terugvinden met behulp van een goed opgebouwde SELECT statement.

Mijn Library Thing catalogus


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik zou inderdaad zoals gesuggereerd een tabel Personen toevoegen. In die tabel neem je dan alle generieke gegevens op zoals de adres gegevens/telefoon nr/etc.

De tabel Cursist/Docent/Ouder verwijst dan gewoon naar die Persoon. Een voordeel daarbij is dat een Persoon zowel een Cursist kan zijn als een Docent of Ouder, maar ook dat je een persoon gewoon op kunt vragen aan de hand van zijn Persoon's id en er daarvoor dus geen onderscheid is tussen de rollen.

Aan de hand van de records in bijvoorbeeld de Cursist tabel kun je dan bepalen welke personen er Cursist zijn.

Overigens vind ik het apart dat je de Postcode/Woonplaats zover door genormaliseerd hebt, maar de adres gegevens gewoon bij een persoon plakt.

Ik zou dan eerder gewoon een tabel Adressen maken en vanuit een persoon naar de adres tabel verwijzen.

edit: wat degene boven mij dus ook zegt ;)

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:12

Dido

heforshe

Je kunt prima 1 tabel met personen maken, waarin alles staat dat cursisten, ouders en docenten gemeen hebben (een ID, een adres, etc.) Ook je logintijden kun je daaraan hangen, dan heb je maar 1 tabel met die tijden nodig.

De specifieke gegevens voor cursisten, ouders en docenten kun je, zo nodig, in aparte tabellen kwijt.

Maar bijvoorbeeld je ouders hoeven niet per se in een aparte tabel. Je kunt een koppeltabel ouder_cursist maken die de persoon-tabel koppelt aan de persoon-tabel.

Een bijkomend voordeel is dat je dan geen dubbele gegevens hoeft in te voeren als een cursist ook ouder is, of een ouder ook een docent is.

Wat betekent mijn avatar?


Verwijderd

Topicstarter
Bedankt voor de tips zover m.b.t. de tabellen. We zullen dit zeker nog wel in overweging nemen om dit alsnog aan te passen. We hebben echter nog maar twee weken om alles af te ronden. Hetgene wat we echter écht nodig hebben is tot op heden nog geen antwoord voor. Tips m.b.t. de structuur en dergelijke zijn zeker welkom, maar dat is niet echt wat we nodig hebben.

De hoofdvragen waar we mee zitten zijn:
Hoe kun je een tekstvak koppelen aan een knop waar dan weer een SQL script achter hangt? En welk script komt hier dan achter te hangen?

Zelf weet ik wel een aantal losse SQL commando's, maar ik weet gewoon echt niet hoe dat je dat tekstvak aan de knop kunt koppelen. Het moet uiteindelijk zo worden dat wanneer je op die knop klikt, dat er dan records worden aangemaakt in de tabel met toegangstijden. Dat wat in het tekstvak komt te staan is dan een ID, wat word weggeschreven in de tabel, samen met de datum_tijd en een status (login/logout).

[ Voor 8% gewijzigd door Verwijderd op 10-04-2009 13:29 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:59

Creepy

Tactical Espionage Splatterer

Voor die vragen moven we het topic richting OFF, daar horen de Access vragen :)
Move PRG -> OFF

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Verwijderd schreef op vrijdag 10 april 2009 @ 13:26:
Bedankt voor de tips zover m.b.t. de tabellen. We zullen dit zeker nog wel in overweging nemen om dit alsnog aan te passen. We hebben echter nog maar twee weken om alles af te ronden. Hetgene wat we echter écht nodig hebben is tot op heden nog geen antwoord voor. Tips m.b.t. de structuur en dergelijke zijn zeker welkom, maar dat is niet echt wat we nodig hebben.
wat je hier doet, heeft ook gevolgen voor je hoofdvraag. indien je structuur tiptop zou zijn, dan heb je maar 1 toegangstijdentabel in plaats van nu 3, wat de aanwezigheidsregistratie bemoeilijkt ;)
De hoofdvragen waar we mee zitten zijn:
Hoe kun je een tekstvak koppelen aan een knop waar dan weer een SQL script achter hangt? En welk script komt hier dan achter te hangen?

Zelf weet ik wel een aantal losse SQL commando's, maar ik weet gewoon echt niet hoe dat je dat tekstvak aan de knop kunt koppelen. Het moet uiteindelijk zo worden dat wanneer je op die knop klikt, dat er dan records worden aangemaakt in de tabel met toegangstijden. Dat wat in het tekstvak komt te staan is dan een ID, wat word weggeschreven in de tabel, samen met de datum_tijd en een status (login/logout).
hier zijn we er al mee met de gevolgen : met 1 tabel gebruik je gewoon de ingebouwde formuliermogelijkheden van access en heb je dus geen opdrachtknop nodig om de inlogtijd aan de juiste tabel toe te voegen.

blijf je bij het huidige systeem kan je ook 3 inlogformulieren maken voor docenten, cursisten en ouders om toch van de ingebouwde mogelijkheden gebruik te kunnen maken :
- maak een nieuw formulier en voeg in een subformuliercontrol de tabel toegangstijden_docent toe.
- pas het ontwerp van deze tabel aan zodanig de actuele datum & tijd automatisch toegevoegd wordt, optioneel kan je ervoor zorgen dat niet rechtstreeks het docentid dient ingegeven, maar dat je via een klaplijst de achter- & voornaam kan intypen of selecteren, of je zorgt dat de docenttabel de hoofdtabel is van het formulier, dan kan je deze gegevens in het formulier laten zien en de subformuliertabel koppelen via het docentid.
in ieder geval zal je je best eerst wat verder verdiepen in formulierontwerp, de online help is al een goede start. mocht je persé met het invoegen van de registratiegegevens via een opdrachtknop gaan, in de eigenschappen van de opdrachtknop kan je aangeven een sqlactie uit te voeren via een macro, bv. 'insert into toegangstijden_docent values( ... ,formulier1!txtToegangstijd, ...);'
Pagina: 1