uitleen geschiedenis

  • Onderwerp starter Onderwerp starter Jpee
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Jpee

Gebruiker
Lid geworden
9 dec 2008
Berichten
87
beste helpmij mensen ik zoek all een tijd naar hoe ik een uitleen geschiedenis moet maken van mij bijgevoegde database. ik wil dus dat wanneer de wijzigingen de uitleningen in een aparte tabel word bij geschreven niet over geschreven. ik hoop dat iemand hier iets op weet.

klik hier voor database

alvast bedankt
 
Ik krijg de voorbeeld db hier niet geopend, dus ik vermoed dat ut een 2007 db is. Ik zal het thuis nog wel een keertje proberen...

Eerst dus maar even een algemeen verhaaltje. Er vanuitgaande dat je iets uitleent, zal je dat artikel wel een uniek ID hebben gegeven in je artikelentabel. Eventueel met een veldje uitgeleend, om bij te houden of het in huis is of niet. Uiteraard heb je ook een tabel met leners, want je wilt kunnen bijhouden wie wat meeneemt.
De uitleningen zelf houd je dan in een aparte tabel bij, met daarin tenminste het uitleenartikel, de persoon die het leent, de datum van uitlening en de datum van terugbezorgen.

In wezen heb je met deze constructie al wat je wilt: een historie van uitleningen bijhouden. Je voegt dus aan de uitleningen tabel records toe, die je bijwerkt als iets terugkomt.

Vanavond zal ik er wat dieper induiken...

Michel
 
graag want ik zoek er all heel lang naar maar ik kan het gewoon niet vinden :thumb::thumb::thumb:
 
Hallo JP,

Er zijn inderdaad wel een aantal zaken die je kunt verbeteren in je ontwerp. Ik zal ze puntsgewijs proberen aan te geven:

1. In de tabel Uitleengeschiedenis heb je een gecombineerde sleutel gemaakt van de velden UitleenID en Productnummer. Aangezien UitleenID een uniek nummer genereert, is dat veld op zichzelf al genoeg als sleutel, er zit dus geen winst in het gebruik van twee velden, integendeel!

2. Het veld Produktnummer zou gekoppeld moeten worden Produktnummer in tblBoek. Hiermee leg je een verband tussen produkten en uitleningen. Het veld Produktnummer in de tabel Uitleengeschiedenis had de indexinstelling <Index Ja, Duplicaten toestaan: Nee>, waardoor het onmogelijk is om een artikel meer dan één keer uit te lenen. Dat kan uiteraard nooit de bedoeling zijn!

3. In de tabel Uitleengeschiedenis leg je een link naar het adres van de klant; ik zou altijd koppelen op basis van KlantID, want een adres hoeft niet uniek te zijn (denk aan families); KlantID's zijn dat uiteraard wel.

4. Persoonlijk zou ik de gezinssamenstelling van de klanten opsplitsen in twee tabellen: hoofdgegevens per gezin, en gezinsleden. Daarmee kun je het aantal velden in de tabel tblAdres aanzienlijk verkleinen, en ook meer dan 3 kinderen aan een gezin toevoegen.

5. In de tabel tblAdres heb je een apart veld voor eerste stempel; er vanuit gaande dat je hiermee de eerste keer dat iets geleend wordt bedoeld, is dit veld overbodig; die info haal je immers ook uit de tabel uitleningen.
Wat ik mis in de tabel, is een optie om een uitleenpas te blokkeren, bijvoorbeeld i.v.m. slecht terugbrenggedrag. Misschien heb je zo'n veld wel niet nodig...

6. Waarom heb je in de tabel Uitleengeschiedenis een veld Volgnummer? Dat is toch al je veld Uuitleen ID (autonummering)? Ik zie dat veld ook terugkomen in de tabel tblboek. Zelfde vraag dus...

7. In de tabel tblboek zit een veld AdresID. Lijkt mij daar niet nodig. Net als de overige uitleengegevens. Restantje van de eerste opzet?

In bijgaand relatieschema heb ik de relaties tussen de tabellen gemaakt zoals het volgens mij zou moeten. Met deze koppelingen, kan er al bijna niks meer misgaan, dan is de rest een kwestie van fijntunen.

Succes verder!

Verdere vragen zijn uiteraard altijd welkom!

Michel
 

Bijlagen

  • Relaties Uitleen.jpg
    Relaties Uitleen.jpg
    81,4 KB · Weergaven: 108
beste Michel

jouw tips van je vorige antwoord heb ik geprobeerd dat lukte wel maar ik heb nog steeds geen tabel met uitleen geschiedenis

hopelijk kan je mijn een voorbeeldje sturen



Hallo JP,

Er zijn inderdaad wel een aantal zaken die je kunt verbeteren in je ontwerp. Ik zal ze puntsgewijs proberen aan te geven:

1. In de tabel Uitleengeschiedenis heb je een gecombineerde sleutel gemaakt van de velden UitleenID en Productnummer. Aangezien UitleenID een uniek nummer genereert, is dat veld op zichzelf al genoeg als sleutel, er zit dus geen winst in het gebruik van twee velden, integendeel!

2. Het veld Produktnummer zou gekoppeld moeten worden Produktnummer in tblBoek. Hiermee leg je een verband tussen produkten en uitleningen. Het veld Produktnummer in de tabel Uitleengeschiedenis had de indexinstelling <Index Ja, Duplicaten toestaan: Nee>, waardoor het onmogelijk is om een artikel meer dan één keer uit te lenen. Dat kan uiteraard nooit de bedoeling zijn!

3. In de tabel Uitleengeschiedenis leg je een link naar het adres van de klant; ik zou altijd koppelen op basis van KlantID, want een adres hoeft niet uniek te zijn (denk aan families); KlantID's zijn dat uiteraard wel.

4. Persoonlijk zou ik de gezinssamenstelling van de klanten opsplitsen in twee tabellen: hoofdgegevens per gezin, en gezinsleden. Daarmee kun je het aantal velden in de tabel tblAdres aanzienlijk verkleinen, en ook meer dan 3 kinderen aan een gezin toevoegen.

5. In de tabel tblAdres heb je een apart veld voor eerste stempel; er vanuit gaande dat je hiermee de eerste keer dat iets geleend wordt bedoeld, is dit veld overbodig; die info haal je immers ook uit de tabel uitleningen.
Wat ik mis in de tabel, is een optie om een uitleenpas te blokkeren, bijvoorbeeld i.v.m. slecht terugbrenggedrag. Misschien heb je zo'n veld wel niet nodig...

6. Waarom heb je in de tabel Uitleengeschiedenis een veld Volgnummer? Dat is toch al je veld Uuitleen ID (autonummering)? Ik zie dat veld ook terugkomen in de tabel tblboek. Zelfde vraag dus...

7. In de tabel tblboek zit een veld AdresID. Lijkt mij daar niet nodig. Net als de overige uitleengegevens. Restantje van de eerste opzet?

In bijgaand relatieschema heb ik de relaties tussen de tabellen gemaakt zoals het volgens mij zou moeten. Met deze koppelingen, kan er al bijna niks meer misgaan, dan is de rest een kwestie van fijntunen.

Succes verder!

Verdere vragen zijn uiteraard altijd welkom!

Michel
 
Ik zal vanavond een bestandje neerzetten; ik neem aan dat je de tabel <uitleen geschiedenis> hiervoor wilt gebruiken?

Michel
 
Nou, dat was een op zijn minst interessante ervaring! Ik weet niet of er in je formulier ergens iets fout zit, want ik kan niks verkeerds vinden, maar elke keer als ik een uitleenformulier probeer te maken, groeit de db als kool, en knalt-ie er na 20 minuten uit! Vervolgens blijkt de db 30-40 Mb groot te zijn, en het nieuwe formulier geruïneerd, of weg....
Kortom, ik heb nog niks voor je :confused:

Ik probeer vanavond nog wel iets anders, maar misschien kun je de db eerst herstellen met <Extra>, <Databasehulpprogramma's>, <Comprimeren en Herstellen> en opnieuw posten? Eventueel als Access 2000 bestand, zodat hij een stukkie 'cleaner' is?

Michel
 
dat is jammer maar goed ik zoek hier al zolang voor, dat een beetje langer wachten niet uitmaak .
 
Michel wanneer kan je mij je voorbeeldje laten zien?????
 
Michel wanneer kan ik het voorbeeldje zien ????????????????????????
 
maar misschien kun je de db eerst herstellen met <Extra>, <Databasehulpprogramma's>, <Comprimeren en Herstellen> en opnieuw posten?

Ik denk dat Michel op bovenstaand verzoek wacht. ;)
 
Ben dur weer; was ook nog eens een weekje op vakantie! Ga vandaag weer eens kijken naar het schone bestand. Hopelijk is deze wat minder frusterend...

Michel
 
Hoi JayPie,

Om je geduld niet helemaal tot he uiterste op de proef te stellen, een eerste update.

Om te beginnen: ook de nieuwe database vervalt in dezelfde fout, nl: de database opblazen, en gruwelijk laten groeien. Ik vermoed nu, dat e.e.a. veroorzaakt wordt door de macro die je op het formulier frmBoek hebt gezet. Ik heb deze routine er dus uitgegooid, en nu lijkt hij wat stabieler te zijn. Fingers crossed!
Punt 2: als uitleenformulier is de huidige opzet niet geschikt, maar dat wist je al. Het formulier frmBoek kan daar eigenlijk ook niet voor als basis dienen, omdat dat structureel niet helemaal goed is opgebouwd. Ik zal dat proberen puntsgewijs aan te geven:
1. Je hebt op het formulier een aantal bladerknoppen in de koptekst gezet om door de records te bladeren. Dit is prima, en die knoppen werken ook goed. Ik mis echter een knop om een nieuw record toe te voegen.
2. In de koptekst staat een keuzelijst <Produktnummers> Hier zit die (naar mijn idee storende) macro aan vast. Wat wil je met deze keuzelijst? Je kunt veel beter m.b.v. de wizard een keuzelijst maken die een record in de tabel voor je opzoekt, dan heb je geen macro meer nodig. En hij werkt dan ook...
3. Op de detailsectie heb je een keuzelijst voor de produktnummers gemaakt. Waarom een keuzelijst? Je hebt immers al bladerknoppen en een zoeklijst?
Waarom is de lijst maar één item lang? Wat wil je er überhaupt mee opzoeken? Kortom: gewoon een tekstvak van maken; je wilt immers een produktID kunnen aanpassen.
4. De keuzelijst Leveranciers is gebaseerd op een tabel Leveranciers die niet goed genormaliseerd is. In de tabel Leveranciers sla je m.i. geen bedrijven op, maar contactpersonen. Op het aantal van 520 records zitten maar 124 bedrijven, de rest bestaat uit dubbele records. Je zult de tabel Leveranciers dus moeten splitsen in een tabel met bedrijfsgegevens, en een tabel met contactpersonen bij de bedrijven, uiteraard gekoppeld door een bedrijfsID. Je kan dat doen door bijv. een tabelmaak te maken waarbij je de velden van de tabel Leveranciers groepeert op alle velden, met het veld LeverancierID op Eerste, en de hele handel in een nieuwe tabel zet.
5. Je wilt op het formulier frmBoek kunnen terugzien wie wat heeft geleend; daar moet je een toch een nieuw formulier voor maken, want dat gegeven heeft niks te maken met de Produktinformatie. Dat geld uiteraard ook voor de datumvelden met de uitleendata. Wel wil je bijhouden of een artikel is uitgeleend, maar dat regel je op het formulier Uitleen.

In algemeen: in de nieuwe database die je hebt neergezet, constateerde ik dat je ook nog geen relaties hebt gelegd tussen de verschillende tabellen. Ik raad je aan, om dat wel te doen; bij het maken van queries bijvoorbeeld heb je daar later veel profijt van. Ook kun je records laten bijwerken, als je bijvoorbeeld besluit om de produktnummers te veranderen, worden gerelateerde records ook aangepast. Zo verlies je geen gegevens in je tabellen.
De tabel Uitleengeschiedenis moet de koppelingen bevatten naar de gerelateerde tabellen. Zorg er dus voor, dat je in deze tabel de sleutelvelden uit die gerelateerde tabellen kunt opslaan. Je hebt in de tabel Uitlever een autonummerveld; gebruik alleen dit veld als sleutelveld, en zorg ervoor dat het veld Produktnummer in deze tabel niet is geïndexeerd is op unieke waarden, want anders kun je een produkt maar één keer uitlenen. Lijkt mij niet de bedoeling...

Ik vermoed dat je deze database ergens anders vandaan hebt, want er staan een aantal routines in, die niet echt te maken hebben met de formulieren die hier inzitten. Gooi alles weg wat je niet nodig hebt, want dat is alleen maar verwarrend. Ook kan je hierdoor tegen fouten aanlopen, als een routine wordt aangeroepen die nergens naar leidt.

Ik krijg de db niet klein genoeg om mee te sturen, maar daar probeer ik nog wat aan te doen. Die krijg je dus nog....

Michel
 
Beste Michel,


Ik ben benieuwd hoe de database er uit ziet.

Zet jij deze database online?

Ik hoop er iets van te kunnen leren. Tevens een grote dank voor de door jouw gedane moeite. Tof.

Groet,
Susan
 
Er zit schot in, maar ik ben er nog niet helemaal... Ik zal kijken of ik vanavond een werkend modelletje voor je heb.

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan