Meerdere velden tabel automatisch invullen via formulier

Status
Niet open voor verdere reacties.

Mulnard

Gebruiker
Lid geworden
6 feb 2007
Berichten
15
Goedenavond iedereen,

Voor een systeem van planning binnen mijn bedrijf ben ik gaan expirimenteren in Access.
Hiermee heb ik al mooie zaken kunnen maken maar nu zit ik verveeld.
Verscheidene avonden "Google" maakten me niet wijzer. Ik hoop dat iemand van jullie mij kan helpen of op het juiste spoor kan plaatsen.
Via deze link kan je alvast een uittreksel van de DB vinden. Rest heb ik weggelaten.
http://www.2shared.com/file/s4ypbQcG/test_Alliance.html
De bedoeling is dat ik via de keuzelijst een artikel kies in het formulier. Dmv van de afkorting vul ik deze in. Ik ben er reeds in geslaagd dat dan automatisch de artikelomschrijving wordt ingevuld in het correcte veld. Nu had ik graag ook gehad dat het in veld "artikelnummer" ook het overeenkomstig nummer wordt overgenomen uit de tabel met de artikels. Dit is nameijk het artikelnummer van de klant zelf. 1 veld "omschrijving" lukt me, 2de niet.
Daarna laat ik rapport maken van de tabel, print ik die uit en geef ik deze aan de magazijnier die zo alle info krijgt die nodig is.

Kan iemand me helpen aub ? Dit moet denk ik perfect mogelijk zijn maar hoe ?

Dank bij voorbaat alvast.

grtjs David
 
Laatst bewerkt:
Om te beginnen: kun je de db ook in 2003 format posten? En zo'n kleine database kun je makkelijk met WinRar in 3 blokken laten splitsen, dan kun je hem gewoon uploaden...
Vermoedelijk heb je een keuzelijst gemaakt waarbij je nog wel wat velden kunt toevoegen. Deze velden kun je met een functie in een tekstvak laten zetten. Een tekstvak krijgt dan het besturingselementbron:
=cboArtikel.Column(2) (dit voorbeeld laat de derde kolom uit de keuzelijst zien).
 
Hey OctaFish,

Zal ik zodadelijk proberen met winrar. Resultaat in bijlage.
Heb reeds zitten experimenteren met de formule die je opgeeft maar ik vul een tabel in en dat vult ie dit veld inderdaad zo in maar bij alle records.
Of doe ik iets verkeerd ?


Mvg
David
 

Bijlagen

Ik ben (weer eens...) overnieuw begonnen met mijn pc, dus ik heb momenteel Office nog niet staan zodat ik nog niet in je db kan kijken. Ik vermoed dat je een doorlopend formulier hebt gemaakt. Dan zou dat kunnen. Maar ik zal proberen er vanavond, en anders morgen, naar te kijken.
 
schitterend, ik wacht wel even af hoor....
Ja ik vermoed dat ze dit een doorlopend formulier noemen.

Dank bij voorbaat
 
Laatst bewerkt:
Kun je eens uitleggen wat de bedoeling is van de db/tabellen? Ik was in eerste instantie in verwarring gebracht door de tabel [Planning Alliance Banden + Artikelnummers], waarin je het veld [Afkorting] als sleutelveld had gedefinieerd. Die naam vond ik een beetje verwarrend, en kun je beter veranderen in ArtikelID o.i.d. Een sleutelveld wil je eigenlijk snel terug kunnen zien in een tabel, vandaar dat ik er altijd ID achter zet.
In de tabel [Planning Alliance Kleine Bak] sla je dit veld vervolgens niet op, maar gebruik je het veld [Type / Omschrijving].... Dat gaat zo niet werken....
Een onafhankelijk veld vullen met gegevens uit een keuzelijst houdt in een doorlopend formulier in dat de inhoud van de keuzelijst in alle tekstvakken hetzelfde is. Dat komt, omdat je in feite maar één tekstvak hebt, dat een aantal keer herhaald wordt. (net zo vaak als je recordregels ziet). De vraag is ook, waarom je dit zou willen; je hebt tenslotte het artikel al gekozen in de keuzelijst. Je kunt beter met een subformulier werken, waarbij je een query als basis gebruikt voor de gegevens, waarin je een koppeling legt tussen artikelnummer en omschrijving. Dit subformulier is dan ook een doorlopend formulier, en zal dus wèl de artikelomschrijvingen tonen.
Je maakt dus eerst een extra formulier als hoofdformulier (eigenlijk alles wat nu bovenin de koptekst staat) en het subformulier bevat de eigenlijke records.
 
Goedemiddag,

Dank voor Uw antwoord. Ik begrijp alvast mijn fout.

Mijn bedoeling is dat ik via de keuzelijst een artikel kies.
Om niet telkens gans de rimram te moeten schrijven heb ik zelf een afkorting gemaakt. Deze typ ik dan waarna Access het veld Omschrijving automatisch in vult.
Omdat onze magazijnier beter weg kan met de artikelnummers en deze in ons magazijn ook vermeld staan op de stapelrekken waaruit deze moeten gehaald worden, zou ik dus graag die nummer ook vermeld zien.
De list ( rapport ) die ik uit print zou ik dan later ook willen meesturen naar de klant zodat deze makkelijker kan terugvinden welke artikelen zich in welke transportbak vinden.

Is dit beetje duidelijk voor U ?

Dank voor alle hulp hoor.
Ik experimenteer alsvast met het veld artikelnummer zodat die niet als tekstvak wordt aanzien.
 
Ik heb de aangepaste versie hier geupload.
Ik heb een nieuw formulier getrokken van de tabel [Planning Alliance Kleine Bak]
hierdoor is het veld artikelnummer wel opgenomen. Maar ook nu lukt dit me niet.
Ik heb als besturingselementbron dus geplaatst cbo.Keuzelijst9.column(3)

Potverdikke moeilijk zeg en heb er zo nog eentje voor een andere klant waarbij ik de omscrhijving wil, het artikelnummer en het aantal dozen. In de basislijst vermeld ik dus de verpakkingseenheid. Als ik dan in het formulier schrijf 2000stuks dat automatiscg wordt uitgerekend dat dit 10 colli's is. Dit om fouten te voorkomen bij het picken.

Maar goed ik tracht eerst deze goed te krijgen en te begrijpen. We zien dan wel verder.
Kan je me op weg helpen aub ?

Bekijk bijlage test Alliance 2003 Aangepast.rar
 
Een artikelnummer mag best als tekstveld worden gebruikt, daar is op zich niks mis mee. Wat je wel zou moeten doen, is op een eenduidige manier omgaan met artikelen en artikelcodes. Dat betekent, dat je een keuze moet maken voor het veld dat je gaat gebruiken als Sleutelveld.
Ik krijg nu de indruk dat het veld Artikelnummer een uniek veld is (elk artikel één artikelnummer), wat op zich ook logisch is. In het magazijn worden de artikelnummers gebruikt om de artikelen op te slaan en terug te zoeken. Lijkt mij dus prima! Ik zou dat artikelnummer dan ook gebruiken in de overige tabellen als sleutelveld. Alleen: in je huidige tabel is het artikelnummer niet altijd ingevuld, en dan kun je het ook niet als sleutelveld gebruiken. Ook zitten er dubbele waarden in voor verschillende artikelen, en dat mag al helemaal niet! Dus die tabel zou ik eerst goed invullen.

In de keuzelijst gebruik je dan het veld Artikelnummer en het veld Omschrijving, waarbij je de eerste kolom (artikelnummer) onzichtbaar maakt (breedte 0) zodat je kunt zoeken op Omschrijving. In de tabel wordt het artikelnummer opgeslagen, en dat kun je in de rapporten weer gebruiken voor het magazijn.
 
Ok.
Vanavond start ik met het invullen van alle artikelnummers. Zodat we deze als sleutelveld kunnen gebruiken.
Ik veronderstel om dan het artikelnummer op te slaan in de tabel, de keuzelijst wordt gebruikt en dat die als bestruingselementbron het veld artikelnummer heeft.

Klopt dit een beetje ?
 
Zie je helemaal goed!
 
Beetje aan het experimenteren.

Maar dan stuit ik weer op het zelfde probleem...
Op het rapport moet ik zowel omschrijving als artikelnummer zichtbaar krijgen.

Screen gemaakt
 

Bijlagen

  • screen access.jpg
    screen access.jpg
    96,6 KB · Weergaven: 347
Laatst bewerkt:
In een rapport moet je geen keuzelijsten gebruiken, maar tekstvakken. Als je de tabellen goed aan elkaar hebt gekoppeld, maak je voor je rapport eerst een query van beide tabellen, en selecteer je daarin alle velden die je terug wilt zien op je rapport. Doordat de tabellen aan elkaar zijn gekoppeld op basis van ArtikelID, vult Access automatisch de gegevens aan. En daarmee maak je dus je rapport compleet.
 
Oooeeeh koppelen, query, id koppeling, ...

OK zoek effe verder. Begrijp het niet meer helemaal.
Niet gedacht hier query voor nodig te hebben.
Vermoed dat ik begrijp waar je naar toe wil.

Dus keuzeveld vult artikelnummer in, dan laat ik veld omschrijving in vullen via een query die de omschrijving opzoekt via het gekozen artikelnummer, alles wordt opgeslagen via 2 tabellen en dan een samenvoegquery voor het rapport.
Maar wat ik niet begrijp is die koppeling ?

mvg
david

dank voor alle hulp alvast
 
Je zult vaker queries gaan maken dan je nu waarschijnlijk denkt ;)
Een query combineert vaak waarden uit verschillende tabellen. Zo zal een tabel Klanten alle klantgegevens bevatten, en een tabel Bestellingen alleen het KlantID.
Om nu een bestelbon te maken, waarbij je uiteraard de adresgegevens van de klant nodig hebt, maak je een query, waarbij je de tabel Klanten en de tabel Bestellingen aan elkaar koppelt op basis van het veld KlantID dat in beide tabellen voorkomt.
Daarbij is het veld KlantID uniek in de tabel Klanten, omdat elke klant maar één keer mag voorkomen met dat klantnummer, en in de tabel Bestellingen uiteraard niet. Anders zou elke klant maar één bestelling mogen plaatsen, en dat is niet echt zakelijk gedacht..
In die quey neem je dus alle klantgegevens op, en alle bestellinggegevens. vervolgens maak je een rapport, waarbij je alle klantgegevens kunt kiezen, en alle bestelgegevens. Kortom: je haalt uit twee gekoppelde tabellen de bij elkaar horende gegevens op, en behandelt ze vervolgens alsof het één tabel is.
Dat is, in een notedop, het principe van het maken van een selectiequery voor een rapport. Een ietsiepietsie uitgebreider straks na te lezen in de cursus...
 
Ah ergens een cursus te vinden ?

Ik experimenteer verder. En zie wel waar ik kom.
Je hoort nog van me.
Die koppelingen is via relaties vermoed ik ?
 
Dat klopt; al is het niet noodzakelijk om de koppeling in Relaties te maken; je kunt ook in de query zelf de twee velden aan elkaar koppelen. Als je het in Relaties doet, wordt de koppeling automatisch gelegd als je een nieuwe query maakt, en dat scheelt vaak wat tijd. En het is belangrijk om de gegevensintegriteit te bewaken.
Kijk voor de cursus in de Nieuwsbrief; daar vind je 'm.
 
Werkt PRACHTIG Octafish.
Vandaag al eerste rapprten afgedrukt.

Wat ik nu bijvoorbeeld nog zou willen maken is :

1. Dat na het afdrukken van het rapport voor het magazijn, alle records automatisch worden verwijdert uit de bijhorende tabel. Zodat wanneer ik volgende planning wens te maken ik start vanaf 0 records. Anders moet ik alles nog eens gaan wissen manueel.

2. ik heb in een tabel naast het artikel-ID het aantal stuks per doos gemeld. Nu typ ik in het formulier het gewenste aantal van de klant en dan zou de query naast het opzoeken van de bijhorende omschrijving ook moeten uitrekenen hoeveel dozen er moeten worden gepickt uit het magazijn.

Wat zijn de mogelijkheden denkt U ?
 
Die zijn er.... Maar eerst even over je eerst opmerking:
Dat na het afdrukken van het rapport voor het magazijn, alle records automatisch worden verwijdert uit de bijhorende tabel.
Je beschrijft een situatie die mij niet helder voor ogen staat. Want hoezo heb je een bijbehorende tabel? Zelf zou ik in een rapportenquery eerder een datumfilter gebruiken. Zeker geen extra tabel, want dat is alleen maar dubbele informatie die je opslaat, zij het tijdelijk. Maar die tabel moet toch ook eerst gemaakt worden, lijkt mij. En die handeling lijkt mij overbodig. Bovendien wil je in de database historie opbouwen, en dat gaat niet als je allerlei records aanmaakt en weggooit. Je houdt dan wel een 'datastabiele' database, maar je hebt geen enkel inzicht in gebruik ervan.

Wat ik zou doen: aan de tabel Bestellingen/Facturen (of wat dan ook de grondslag is van het rapport) een datumveld toevoegen. Op het moment dat het rapport moet worden geopend, zou ik het datumveld in de tabel bijwerken met de huidige datum. De bron voor het rapport is dan een query waarbij het datumveld leeg is. Dat zijn dan namelijk de records die nog niet zijn afgedrukt.
Dat houdt wel in dat je de selectie van de af te drukken records op een formulier doet (maar formulieren voor de dagelijkse handelingen moet je toch al hebben), en dat je het bijwerken van de records dus automatiseert tegelijk met het afdrukken van het rapport. Je maakt daarvoor dus een knop die het rapport opent, en de records bijwerkt.
Met deze methode kun je altijd terugvinden wanneer een bepaald rapport is afgedrukt, en je houdt je historie in tact.
Wat betreft de tweede vraag: die is ook relatief simpel op te lossen. Als je een artikel bestelt, weet je wat de verpakkingshoeveelheid is van het artikel. Je weet ook hoeveel exemplaren zijn besteld, want dat wordt ingevuld. Als je dus het aantal exemplaren deelt door het aantal per verpakking, en dat naar beneden afrondt en er vervolgens 1 bij optelt, dan weet je hoeveel dozen je nodig hebt. Voorbeeldje:

Aantal per Verpakking:6
Aantal besteld: 16
Aantal dozen: (Int([Aantal besteld]/[Aantal per Verpakking])+1)=3 dozen.
De functie Int maakt van elke berekening een integer, oftwel een geheel getal. 16/6=2,666667. Het gehele getal is dus 2. Plus 1 maakt 3 dozen.
5/6=0,8333. Het gehele getal is dus 0. Plus 1 maakt 1 doos. En zo voort.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan