Acces 2007 Database

Status
Niet open voor verdere reacties.

Lyricalheart

Gebruiker
Lid geworden
2 mrt 2011
Berichten
25
Ik ben een database aan het maken voor een schoolopdracht.
Een stichting laat ons hun laptops configureren enz.
Informatie hiervan moet worden opgenomen in een Database, die ik nu aan het maken ben.
Nu heb ik veel vragen en zal ik vaak om hulp vragen.
Hopelijk kan iemand mij hiermee helpen.

Mijn vraag van vandaag is, hoe maak ik een scherm waar mensen gegevens in kunnen vullen die dan automatisch in de Database opgenomen worden.
Ik heb 2 tabs en die hebben allebij een kolom ID die zijn gekoppeld.
 
ja kan gewoon van de tabellen een formulier maken. dit gaat dacht ik gewoon met de rechter muis knop en de auto formulier maar dat is even iets anders. als je dat gevonden hebt krijg je een formulier kant en klaar.
 
Deze vraag lijkt parallel te lopen met je andere vraag.... Daarin heb je het niet over een formulier. De antwoorden wel.... Gebruik als principe dat je nooit rechtstreeks in een tabel werkt, maar altijd via formulieren. Als de db klaar is, moet je de gewone gebruiker ook verbieden om in een tabel te werken. Die heeft daar namelijk niks te zoeken. Daarvoor heb je namelijk je formulieren.
 
~Jura1993
Lol jou mag ik ^^
En nee een zoekbalk macro maken heeft niks hiermee te maken.
Ik wil de database zo uitgebreid mogelijk maken zodat ik deze als stage opdracht kan gebruiken, en een beetje indruk kan maken op leraar en begeleider^^

Een formulier laat enkel informatie zien, ik wil er 1 die informatie toe kan voegen in de database, zodat de gebruiker/ tijdelijke beheerder er makkelijk mee kan werken als ik er niet ben.
Rijen en kolommen zijn veel te makkelijk te veranderen en een ongedaanmaak knop heeft acces niet.
Dus dit formulier wil ik maken om fouten te voorkomen.
Hopelijk was dat een beetje duidelijk:D
 
Ik laat jullie uiteraard graag doorknutselen als jullie mij niet nodig hebben :)
Ik zal gekke henkie wel zijn, maar dit klopt volgens mij (al jaren...) niet:
Een formulier laat enkel informatie zien, ik wil er 1 die informatie toe kan voegen in de database, zodat de gebruiker/ tijdelijke beheerder er makkelijk mee kan werken als ik er niet ben
En dit ook niet:
Rijen en kolommen zijn veel te makkelijk te veranderen en een ongedaanmaak knop heeft acces niet.

Nogmaals: een gebruiker wil je niet een een tabel laten werken, dat is echt niet handig voor hem/haar. Juist met formulieren (jazeker, die kun je gebruiken om gegevens te wijzigen, records toe te voegen, records te verwijderen etc) maak je het de gebruiker gemakkelijk, En ******* als het niet waar is: ook een formulier kun je een tabelweergave geven, zodat het net lijkt alsof ze in de tabel aan het werken zijn! En dan heb je nog steeds alle voordelen van een formulier!!
 
Als je een kolom om welke reden dan ook, verplaatst kun je dit niet ongedaan maken.
En ik heb de eerste dag dat ik ermee bezig was wat af gevloekt, niks werkte en als iets fout ging kon ik het niet ongedaan maken.
Dit zal elke onervaren gebruiker merken.
Daarom de formulieren.

En het formulier formulier is gewoon een mooie achtergrond die de informatie van 1 rij laat zien, standaard.

Daarom ben ik dus nu bezig met het maken van een formulier waar je gegevens op in kan vullen, waarna dit direct in mijn Database terecht komt.
Deze heeft een relatie met mijn andere tab en die moet in die tab moet dus ook een gebruiker cijfer toegevoegd worden als je deze gegevens in de eerste tab invult.
Snapst?
 
Wat bedoel je nu weer met
Als je een kolom om welke reden dan ook, verplaatst kun je dit niet ongedaan maken.
Een kolom (we hebben het toch over de tabelweergave??) kun je altijd verplaatsen, en ook weer terugslepen als je dat wilt.... En bovendien verandert het verplaatsen van een kolom niks aan je gegevens. Dus waarschijnlijk gebruik je een terminologie die niks met databases te maken heeft...

Een formulier kun je verder op twee manieren gebruiken: Afhankelijk, en Onafhankelijk. In het eerste geval koppel je een tabel of een query aan het formulier, waarna je velden uit de tabel of de query op het formulier kunt zetten. Alles wat je daarna op het formulier doet, sla je gelijk op in de tabel die er onder ligt. In het tweede geval heb je geen gegevensbron, en moet je alles achteraf opslaan. Ik gebruik zelf regelmatig onafhankelijke formulieren, waarbij ik via VBA de tekstvelden laat vullen, waarna je kunt klooien wat je wilt; pas als je op de knop <Opslaan> klikt worden de gegevens weggeschreven. Een methodiek die ik veel veiliger vind.

Ik ben er nu ondertussen trouwens wel achter dat je met 'tab' geen tabelement op een formulier bedoelt, maar een tabel.... Zullen we dat maar misplaatste luiheid noemen?
 
Nee jij bent gewoon geen noob in Acces meer, die eerste dag snap je niet hoe de functies werken en zul je toch alle opties testen die Acces te bieden heeft. Dus laat het vallen en blijf bij mijn vraag aub.
Ik wil een formulier maken waarmee je gegevens in de Database kan plaatsen.
Help.
 
Dat is een simpele vraag, waarop het antwoord al is gegeven door Jura. Gebruik eventueel een wizard om je formulier te maken, dan zie je gelijk welke mogelijkheden je hebt.
Ik heb 2 tabs en die hebben allebij een kolom ID die zijn gekoppeld
Dit blijft verwarrend.... we zijn er ondertussen uit dat je tabellen bedoelt, maar als ik het zo lees heb je denk ik Access een Autonummerveld laten maken. Zo niet, dan hoor ik dat graag. In ieder geval kun je die twee tabellen niet zonder meer aan elkaar koppelen. Laten we het even duidelijk proberen te schetsen:

Tabel1
ID - (Auto)nummeriek veld
Serienummer - Tekstveld
Objectnaam - Tekst

Tabel2
ID - (Auto)nummeriek veld
Ref_ID - numeriek veld
Tekstveld - Tekst

Ik heb nog geen idee wat je aan het doen bent in je db; anders dan iets met laptops. Daarom moet ik dus gokken naar de tweede tabel. De eerste tabel bevat de laptops en de serienummers.
Normaal gesproken wil je in de tweede tabel gegevens opslaan betreffende de laptops. Stel dat je ze wilt uitlenen. Dan wil je in de tweede tabel uiteraard alleen laptops uitlenen die in Tabel1 staan. Dus ga je de twee tabellen aan elkaar koppelen. Daarvoor gebruik je uit tabel1 het veld ID (autonummerveld, dus uniek) en uit tabel2 het veld Ref_ID. Niet het veld ID uit tabel2, want dat is een eigen uniek nummer. Bovendien wil je elke laptop meer dan één keer kunnen uitlenen, dus is Ref_ID geen uniek nummer. Je krijgt dan een één-op-veel koppeling tussen Tabel1 en Tabel2.

Nog even iets algemeens: Access is een behoorlijk ingewikkeld programma, en niet te vergelijken met Word of Excel, waarin je wat aan kunt klooien. Access vereist enige studie, voordat je snapt wat je aan het doen bent. Steek die tijd er dus rustig in, en er gaat een wereld voor je open. Vergelijk het met een (scherp) operatiemes: een simpel instrument, waar iedereen mee kan hakken. Maar alleen een chirurg kan er fatsoenlijk een hart mee vervangen, want die heeft daarvoor gestudeerd. Bij jou en ik is dat tot mislukken gedoemd....
 
De mogelijkheid voor het formulier wat ik zoek is staat er niet.
Je kan je informatie weer laten geven op een formulier, maar ik wil er 1 die informatie IN mijn database kan planten.
Stel je krijgt een nieuwe laptop voor je neus en je moet hem erin zetten. dan haal je het formulier erbij (dat ik nu wil maken) en vul je de velden in, om 1 of andere reden kan dit niet met mijn formulier.
Dat wil ik aan de praat krijgen.
Dus denk na over wat er fout kan gaan als je informatie op wil slaan in een database, doormiddel van een formulier, en stel je vragen.
Dan kan ik antwoorden en zijn we een stapje verder.

Hierbij de screenshot van mijn huidige formulier. Met knop en tekstvak.
Bekijk bijlage naamloos5.zip
 
Als je het formulier op de tabel hebt gebaseerd, zou het probleemloos moeten werken. Je hebt alle formuliervelden (behalve het zoekveld) aan een tabelveld gekoppeld, zoals het hoort. De belangrijkste reden die ik kan bedenken waarom het niet werkt, is dat je een query gebruikt voor het formulier, en niet de tabel. En die query is dan nt verkeerd opgezet, zodat de query niet gebruikt kan worden voor invoer. En als dat in de query niet gaat, kan het in het formulier ook niet. Probeer maar eens een quick-and-dirty formulier te maken op basis van één tabel; je zult zien dat je alles kunt doen op dat formulier: invoeren, wijzigen en verwijderen.
Andere test: als je de query opent, en je kunt in de query ook niks wijzigen, dan zit de fout in de query.
Omdat we geen voorbeeldje hebben, kunnen we dat uit de afbeelding verder niet opmaken.
Wat ook nog zou kunnen: de optie <Gegevens toevoegen> staat op Nee. Aangezien dat geen standaard instelling is, en je dat dus zelf moet doen, ga ik er van uit dat dat niet de oorzaak is.
Om een voorbeeldje te posten hoef je alleen maar een kopie te maken van de db, en de tabellen leeg te maken. <Comprimeren en Herstellen> helpt dan nog om de db klein genoeg te maken om hem te zippen en binnen de 100 kb te houden.
 
Ik heb onderhand een optie gevonden om (doormiddel van een formulier) data in mijn database te zetten, maar nu moet ik naast die laptop tab ook een kolom in de tab Klant aanpassen omdat deze een relatie hebben.
Het formulier geeft zowiezo de eerste rij informatie weer, uit de tabel. Is er de mogelijkheid om de gerelateerde kolom (uit tabel Klant) in mijn Laptop formulier te zetten?Bekijk bijlage naamloos10.zip

Ik denk dat ik een test versie maak van mijn Database zodat het wat makkelijker wordt voor jou
 
Laatst bewerkt:
Ik kan er vanavond naar kijken; op het werk gebruiken we geen 2007. Of je moet nog kans zien hem op te slaan als 2003 db.
 
Ik heb je opzet bekeken, en (zal je vast niet vreemd vinden) zitten er wel een paar probleempjes in. Dat gevoel werd al getriggerd door deze zin:
maar nu moet ik naast die laptop tab ook een kolom in de tab Klant aanpassen omdat deze een relatie hebben.
En dat blijkt dus te kloppen. In eerste instantie leek je een goede relatie gelegd te hebben tussen Laptop en Klanten, maar bij nadere bestudering klopt dat dus niet. In jouw opzet kun je niet op de juiste manier laptops aan klanten koppelen. Je kunt namelijk bij jou een laptop aan meerdere gebruikers koppelen, en dat lijkt mij toch niet de bedoeling. Althans: niet tegelijkertijd. Een klant is één object, en een laptop is ook één object. En een zelfstandig object kan maar op één plaats zijn in de tijd. Oftewel: als een klant een laptop heeft, moet het (niet alleen fysiek maar ook databasetechnisch) onmogelijk zijn om dezelfde laptop aan een andere klant mee te geven. Om dat te regelen, heb je een derde tabel nodig, en een aanpassing in de tabel Laptops.
Mischien is het ook handig om nog even de principes van een tabel uit te leggen in (hopelijk) heldere taal: in een tabel sla je gegevens op die exclusief bij elkaar horen. Een klantentabel bevat bijvoorbeeld de klantgegevens. En een Laptop tabel gegevens van laptops. Dat houdt in, dat je in een klantentabel geen gegevens opslaat van laptops, en in een laptoptabel geen klantgegevens. Een laptop verandert bijvoorbeeld niet als je hem aan een andere klant meegeeft; het blijft hetzelfde apparaat. Het merk verandert niet, het type niet, de aanschafprijs niet etc. Idem dito voor een klant: zijn naam verandert niet als hij een laptop meeneemt. (tenzij je 'm steelt natuurlijk).
Omdat we in de tabellen met brongegevens unieke records willen kunnen terugvinden (één specifieke laptop, één bepaalde klant) gebruik je sleutelgegevens: bijvoorbeeld Serienummer voor Laptops, en KlantID's voor klanten. In de brontabellen komen die sleutel exact één keer voor.
Uiteraard wil je vastleggen welke laptop naar welke klant gaat. Daarvoor maak je een tabel Laptop-Klant aan bijvoorbeeld. Hierin maak je records aan waarin je een KlantID koppelt aan een Serienummer, om maar even bij jouw tabellen te blijven. Afhankelijk van wat je wilt bereiken, maak je van de combinatie Serienummer+KlantID een combinatiesleutel, wat jij in beginsel gedaan hebt in de tabel Laptop. Deze sleutel heeft één nadeel: als je de laptops wilt verhuren, dan kun je met deze sleutel elke combinatie van Laptop en klant maar één keer gebruiken. Oftwel: elke laptop mag maar één keer worden uitgeleend aan dezelfde klant.
Bij een verkooptransactie zal dat in beginsel geen probleem zijn (een klant wordt tenslotte eigenaar van de laptop) maar bij een verhuurbedrijf is de combinatie enigszins ongelukkig. Wat doe je als een klant een laptop huurt die hij al een keer heeft gehuurd? En het is het laatste exemplaar? Moet je hem wegsturen....
Mocht je er zelf niet uitkomen, dan kan ik het voorbeeld wel weer posten; het lijkt me dat je het eerst zelf wilt proberen :)
 
Ok dat klinkt duidelijk, punt is dus, klantid uit laptoptabel halen en een tabel erbij maken.
Nieuwe tabel zal bestaan uit klantid en serienummer laptop. Mijn database is gemaakt voor laptops die wij klaarmaken voor verkoop aan een student, soort uitleen denk ik. De klant zal geen andere laptop krijgen. De klant zal geen andere laptop krijgen en de laptop geen andere eigenaar. Ik heb onderhand een formulier waarmee ik gegevens in de database toe kan voegen.
De nieuwe tabel ga ik nu proberen erin te zetten.
Mijn begeleider heeft alleen nog wat nieuwe kolommen voor me verzonnen.

De laptops worden door een bedrijf gecontroleerd (nadat ze bij ons zijn geweest) en die sturen ze naar de desbetreffende klant, of wij sturen ze direct naar de klant.
Nu wil hij een kolom "wij" en een kolom "ander bedrijf" (met vinkje) om na te kunnen gaan wie de laptop naar de klant heeft gebracht.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan