Voorbeeld database access

Status
Niet open voor verdere reacties.

remco12ch

Gebruiker
Lid geworden
11 jun 2013
Berichten
18
Hoi luitjes,

Ben begonnen met het maken van een database in access, maar heb een paar vragen, ten eerste als ik het bestandje probeer toe te voegen als bijlagen krijg ik steeds de melding dat het een ongeldig bestand is.
servicebase2013.accdb Snap niet wat hier fout aan kan zijn omdat het een acces bestand is.

Mijn andere vragen hebben dus te maken met deze eerste opzet van de database, maar weet niet of ik dit nu al kan stellen hier. Nu toch maar een poging.

De opzet is als volgt: ik maak een klant (veld1) aan met daarbij zijn/haar koffiemachines (veld2) en aanverwante machines. Deze machines hebben onderhoud nodig (veld3) maar ook reparaties en onderdelen eraan gekoppeld. Nu weet ik dus niet hoe ik (veld3) de reaparties en onderdelen, moet omschrijven en in een veld zetten en deze koppelen.

Uiteindelijk zal er ook een werkbon uit moeten rollen waarin de reparaties of onderhoud wordt omschreven en de verbruikte artikelen vermeld.

Kan iemand mij een zetje de goede richting op geven (en graag ook hoe ik mijn bestandje kan toevoegen want dat praat toch makkelijker)

Remco

Ooh ben er al achter accdb is geen goedgekeurd bestands extentie lol
 

Bijlagen

  • Servicebase2013.rar
    20,2 KB · Weergaven: 713
Kunnen we het over je db gaan hebben :)
En dan beginnen we gelijk bij de tabellen die je problemen gaan opleveren: de tabellen [MachinePark] en [Onderhoud]. Wat is daarin het probleeem? Een enorme hoeveelheid dataredundantie. Zo heb je in de tabel [MachinePark] 5 setjes gegevens:
[Machine 1]
[Merk en type 1]
[Serienummer 1]
[Opmerkingen 1]
En dat loopt dus t/m Machine 5. Niet doen: per record één machine. Dus alles vanaf [Machine 2] eruit. En [Machine 1] dan uiteraard hernoemen naar [Machine] etc.
Tweede fout in deze tabel: het veld [Merk en type]. Een databaseveld hoort één eenduidig soort gegeven te bevatten. De veldnaam geeft al aan dat dit hier niet het geval is. Splitsen dus in [Merk] en [type].
Idem dito voor de tabel [Onderhoud]. Waarom zou je überhaupt 5 machines tegelijk in één record zetten? Niet doen. Haal dan gelijk ook de tweede fout er uit, als is die van nul en generlei waarde voor het juist functioneren van de db: Frequenty is natuurlijk in het Nederlands 'Frequentie'.
Je bent nog niet toegekomen aan het koppelen van de tabellen, en dat is gezien het voorgaande maar goed ook ;)
 
Dank je wel Octafish,

Als ik het dus goed begrijp moet ik eigenlijk voor alles een aparte tabel gaan maken en hierin dus alleen per machine de benodigde info benoemen. is er dan ook een optie om er een pulldown menu in te plaatsen waarin je de verschillende type machines kan verwerken, of dien ik die ook elk in een aparte tabel te verwerken??

Remco
 
Dan zou dit een betere optie moeten zijn ???
 

Bijlagen

  • Servicebase2013.rar
    26,4 KB · Weergaven: 481
Dit is niet veel beter, vrees ik. Of zelfs misschien wel slechter. Je moet voor elke entiteit in je database één tabel hebben. Dus voor machines: 1 tabel. Voor onderhoud: 1 tabel. Geen 5. Bovendien gebruik je in die tabellen de verkeerde (of geen) sleutelvelden. Ik heb je voorbeeldje dus even aangepast. Niet dat het nu af is, want ik kan mij nog veel meer problemen voorstellen waar je tegenaan gaat lopen.
 

Bijlagen

  • Servicebase2013 v2.rar
    18 KB · Weergaven: 536
oke, maar wat nu als een klant meerdere machines heeft, hoe kan ik dat dat zichtbaar maken in een algemeen scherm.

Ik had dus eigenlijk het volgende voor ogen:
* Een algemeen info veld over de klant (hierin adres gegevens en de machines die de klant bezit huur/leen/eignedom)
* Per machine een overzicht van uit te voeren onderhoud en de onderhoudshistorie.
* Verbruikte onderdelen bij onderhoud en reparatie.
* Uitprinten van werkbon en werkplaats order.

En dit dan misschien nog uitbreiden met meerdere opties in de toekomst.

Is dit überhaupt goed te doen in Access
 
Tabel 1 - klanten
KlantID, Naam, etc
1, Klant1, Adresje

Tabel 2 - machines
MachineID, Naam
1, Zomaar een machine
2, Nog een machine

Tabel 3 - KlantMachines (KlantID, MachineID)
1,1
1,2

Door gegevens middels 3e tabellen te koppelen kun je aangeven dat klant1 dus 2 machines heeft. Op analoge wijze voor onderhoud, onderdelen, etc.
En ja, dat kan allemaal makkelijk in Access, maar misschien is het verstandig om je even wat in te lezen in databases. Het maakt op zich namelijk niets uit of je dit in Access, Progress, Oracle, MySQL of SQL server doet - het is allemaal op dezelfde relationele opzet en regels gebaseerd.
 
Als je naar het Relaties venster gaat, zul je zien dat in mijn opzet dat allemaal kan. Er is nu een één-op-veel relatie tussen Klanten en Machines. Dat betekent dat elke machine in de tabel Machines uniek is, en in die tabel bij elke machine ook één Klantid opslaat. Dus één klant kan meerdere machines hebben, maar één machine kan maar van één klant zijn. Bij onderhoud precies zo: elk onderhoudsrecord is gekoppeld aan één machine (machineID) maar elke machine kan meer onderhoud hebben. Overigens zou ik die tabel zelf anders inrichten. Ik zou onderscheid maken tussen de onderhoudscontracten (al dan niet per machine of per klant) en het feitelijke onderhoud (huidige tabel). Zoals ik al zei: de opzet is nog lang niet af ;)
 
Hahahaha ik dacht leuk ik heb vakantie. laat ik eens iets nuttigs gaan doen, maar zie dat ik hier een hoop werk op mijn hals heb gehaald (wat ik overigens wel leuk vind hoor) en ja ReneDirks, ik lees me suf, onder andere de handleidingen hier op Helpmij en een Belgische website waar je online gratis cursus kan doen. Het blijkt dat ik meer verstand heb van koffie dan van computers.:D
 
Wat betreft René zijn derde tabel: die zou ik zo niet maken, want in zijn voorbeeld kan Klant 1 machine 3 hebben, maar klant 2 kan ook met machine 3 worden gekoppeld. Lijkt mij niet echt de bedoeling... Tenzij machines van hand tot hand gaan, en je de historie daarvan wilt bijhouden. Dan kun je op basis van datums zien wanneer welke machine bij welke klant staat.
 
Laatst bewerkt:
Ik ga nog maar even terug de boeken in, en op papier zetten wat ik wel en niet wil. tot nu toe in elk geval bedankt, geloof dat dit een 10 jaren plan gaat worden voor me hahahaha
 
Michel, hoe zou jij dan aangeven dat een klant meerdere machines heeft?
 
Elke machine hoort in beginsel bij één klant. Dus bij de machine kun je prima een KlantID opslaan. Anders wordt het als de machines (bijvoorbeeld omdat ze gehuurd worden voor een bepaalde tijd) steeds bij andere (kan dan ook dezelfde) klanten komen te staan. In dat geval moet je de derde tabel gebruiken met KlantID, MachineID en Begin- en Einddatum. Maar bij verkoop van machines volstaat een één-op-veel relatie tussen Klanten en Machines lijkt mij. Wil je het uitgebreid vastleggen, dan kun je voor de machines een configuratietabel gebruiken.
 
ha dat van die configuratietabel is er 1 om het makkelijker te maken zie ik hahahahah,pfffffffffffffffffffff nu helemaal de weg weg lol
 
Voordat je überhaupt de computer opstart, en Access, moet je al voor jezelf (liefst op papier) hebben uitgewerkt wat de database moet kunnen doen, en wat je er uit wilt kunnen halen. Een functioneel ontwerp noemen we dat. Op basis daarvan ga je kijken welke tabellen je daarvoor nodig hebt, en als je dat hebt uitgetekend in een ER model, dan pas start je Access op en ga je bouwen. Dat is dus de laatste stap die je doet, en niet de eerste, zoals zoveel mensen doen :)
 
ha, dat stukje had ik toevallig om 10.42 uur al hier neer gezet, alleen ontbreekt mij de kennis van hoe verder vanaf daar
 
Noem je dat een functioneel ontwerp? Is meer een terloopse opmerking.... Op basis daarvan zou ik in ieder geval geen database voor jou kunnen bouwen.
 
oohhh, zoals al eerder bekend hebbende, ik ben een leek en dat blijkt wel weer. yep met de neus op de spreekwoordelijke feitjes gedrukt hahahaha
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan