Uitdagende opdracht

Status
Niet open voor verdere reacties.

Mkees

Gebruiker
Lid geworden
26 sep 2011
Berichten
10
Hallo allemaal,

Voor mijn werk moet ik in Microsoft Access een waterdichte manier maken om een soort factuur op te stellen. Ik heb een basis met microsoft access, maar het idee wat ik nu in mijn hoofd heb ik hoe ik het uiteindelijk wil, zie ik mezelf nu nog niet creëren.

Het doel:
Voor mijn werk worden er artikelen naar het buitenland gestuurd. Om de artikel hierbij langs de douane te krijgen moet er bij de verzending een soort factuur zitten waarop verschijnende gegevens van de artikelen staan. De vorming van dit factuur moet ik ontwikkelen.

De eisen:
1. Medewerkers:
Er moet een mogelijkheid zijn dat medewerkers zichzelf toe kunnen voegen, waarna ze bij de volgende keren alleen hun personeelsnummer in moeten vullen waaraan de contact gegevens gekoppeld zijn
2. Adressen:
Er moet een mogelijkheid zijn waar medewerkers nieuwe adressen aan kunnen maken.
3. Artikelen:
De gegevens van de artikelen: Artikelnummer, Beschrijving, Serie nummer, Artikel status, afkomst, hoeveelheid extra info en prijs per stuk
Van deze artikelen kan alles in een database komen te staan behalve serie nummer (die varieert per verzending) en hoeveelheid (kan verschillen van 1 tot 10.000 stuks)
4. Factuur nummer:
Het factuurnummer moet opgebouwd worden uit de afdelings code, datum en eventueel tijd, zodat elk factuur een uniek nummer heeft.
5. Streepjescode:
Het factuur moet voorzien zijn van een streepjescode die is opgebouwd uit het factuurnummer
6. Gebruik:
het uiteindelijke resultaat wordt op een server geplaatst waarna het mogelijk moet zijn dat medewerkers tegelijkertijd een factuur op moeten kunnen stellen.
7. Factuur:
Het factuur moet geëxporteerd worden naar excel of word zodat deze opgeslagen kan worden op de computer van de medewerker. Het geëxporteerde bestand moet uiteraard voorzien zijn van een opmaak.
8. Werking:
Het moet dusdanig simpel in elkaar zitten dat iedereen er mee kan werken. Er moet een formulier gemaakt worden waar de artikelen op ingevuld kunnen worden. Wanneer er onderaan op (bijvoorbeeld) de knop "Klaar" klikt de gegevens naar een Rapport worden geëxporteerd en de gegevens die opgeslagen moeten worden naar een tabel.

De moeilijkheden (voor mij):
1. niet, alleen nog even perfectioneren
2. idem als #1
3. Hier begint het. Aangezien mijn bedrijf met honderdduizenden verschillende artikelen werkt die niet in een fatsoenlijk database staan zullen de artikelen altijd handmatig ingevuld moet worden. Wat ik daarom wil is een mogelijkheid met een formulier om 20 artikelen in te voeren met de al aangegeven feiten hierboven. Wat mijn probleem nu echter is dat wanneer ik meerdere tekstvakjes koppel aan een tabelkolom hij bij een input gelijk alle tekstvakjes vult met die input. Er moet dus een manier komen dat er 20 artikelen (of minder) ingevoerd kunnen worden waarvan de waarde uiteindelijk wel in een tabel gezet moeten worden (op serienummer en hoeveelheid na) wanner het rapport wordt gemaakt. Wanneer de volgende keer het artikel nummer ingevuld wordt dat de rest er automatisch aan gekoppeld wordt (er is echter een hele kleine kans dat een artikel twee keer verstuurd gaat worden, dus het zal heel lang duren voordat het database gevuld is met alle artikelen (dan hebben we het over jaren) wat ik hiermee aan wil geven is dat de optie van 20 artikelen in moeten vullen altijd zal moeten blijven bestaan) Een snel in elkaar gezet voorbeeld met mogelijkheid voor 10 artikelen:
21ozoqs.jpg

4. Ik heb geen idee hoe ik dit op moet doen
5. Idem als #4. Er staan genoeg mogelijkheden op internet, alleen zijn dit vaak probeer versies of gratis tooltjes met reclamen. Gezien de omvang van het gebruik kan ik niet zomaar even wat van internet halen.
6. Nog geen onderzoek naar gedaan, maar ben er van overtuigd dat dit mogelijk is
7. Zelfde als #6 moet ik nog onderzoek naar doen, maar heb wel al gelezen dat het mogelijk is.
8. Zo zal het resultaat moeten worden.

Is er iemand die mij kan ondersteunen/een duw in de goede richting kan geven?
Ik zit momenteel in de nachtdienst, dus ben er vanavond om 23:00 uur weer.

Alvast bedankt voor het mee denken!

Met vriendelijke groet,

Mkees
 
@4 Indien stap 1 ook de afdelingscode bevat is dit redelijk triviaal. Afdeling ophalen uit de personeelstabel en daar de datum en tijd in reverse order aan vast plakken.
@5 dit is niet eenvoudig op te lossen. Je zult hier altijd terug moeten vallen op VBA of een extensie. Belangrijk is om te weten welke encoding de streepjescode moet gaan gebruiken.
@3 Artikelnummer invoeren. Indien onbekend, nieuw standaard formulier waar de data ingevuld kan worden en opgeslagen. Zo vervolgens doorgaan. Dit is flexibeler en kan omgaan met grotere orders dan 20.
 
Ondanks het uitgebreide verhaal, zijn mij toch een paar punten niet helemaal duidelijk: je hebt het over een artikelen bestand van honderdduizenden verschillende artikelen. Da's een hoop.... De vraag is, of je die wel in een tabel moet gaan opslaan, want iets verderop zeg je:
er is echter een hele kleine kans dat een artikel twee keer verstuurd gaat worden
Mijn vraag is dan: waarom zou je moeite steken in het aanmaken (en zwaar belasten) van je database, als het toch alleen maar om gegevens gaat die één keer gebruikt worden? Een artikelen tabel heeft pas zin (in een één-op-veel relatie) als die artikelen meer dan een keer worden gebruikt. (let daarbij ook op de naam van de relatie: één-op-één-op-veel; één artikel wordt veel keren gebruikt) Als je dus gegevens wilt vastleggen die eenmalig zijn, dan zit er weinig anders op dan die steeds opnieuw in te typen. Anders wordt het als je met categorieën kunt werken, bijvoorbeeld voor [Artikel status] en [Afkomst]. Deze gegevens kun je prima in een tabel zetten, en misschien ook het veld [Beschrijving] nog wel, als je de artikelen te categoriseren zijn.
Voor die enkele keer dat een artikel al eens is ingevoerd, wat volgens jouw eigen woorden zelden voorkomt, is het net zo makkelijk om dat artikel opnieuw in te voeren. De tijdwinst die je maakt door geen artikelen tabel aan te maken met honderden duizenden artikelen is dermate groot (systeembelasting), dat je volgens mij niet eens een andere keuze hebt; met zo'n enorme tabel wordt je systeem namelijk loeitraag.

Wat je wèl nodig hebt, is zo te zien een tabel [Bestellingen]. (0f leveringen, naam heb je zelf al bedacht neem ik aan). Dat is de tabel waar je doorgaans de artikelen aan zou koppelen. De bestelgegevens zul je uiteraard wel op willen slaan, want op basis daarvan maak je straks je factuur. Dus heb je een tabel [Bestellingen], en een tabel [Bestelregels]. Die laatste zou als basis je afbeelding kunnen hebben; dar stan immers de artikelen op. Daarbij koppel je de factuur dus aan je tabel bestellingen; in een factuur kun je dan per bestelling zien welke bestelregels er zijn geleverd.

Om met een barcode te werken, heb je een barcode font nodig. Deze koppel je aan het tekstveld waarin de barcode staat, en als het goed is zie je dan je barcode. Daar heb je in beginsel niet veel voor nodig, behalve het juiste font. Dat is wel te scoren, vermoed ik.
 
Daar heb je in beginsel niet veel voor nodig, behalve het juiste font. Dat is wel te scoren, vermoed ik.

Afhankelijk van het type barcode. Een aantal barcodes werken niet zonder checksum en die zul je moeten berekenen. Van daar dat ik naar het type barcode vroeg :)
 
Maar ingewikkeld doen als het met een gratis font kan, zonder programmeren moet toch de voorkeur hebben :D Dus ik heb 't voorbeeldje er maar bijgestopt...
Laten we eerst maar eens wachten tot TS reageert; zijn andere problemen lijken mij een stuk groter dan een fontje meer of minder...
 

Bijlagen

Bedankt voor alle reacties!
Ben nu bezig geweest met layout, waar toch ook meer tijd in gaat zitten dan ik had verwacht, maarja het oog wil ook wat.
Ik ga het nu opbouwen tot wat me lukt, daarna horen jullie wel weer van mij!

Maar ingewikkeld doen als het met een gratis font kan, zonder programmeren moet toch de voorkeur hebben Dus ik heb 't voorbeeldje er maar bijgestopt...

Ik neem aan dat er dan wel op elke computer dit geïnstalleerd moet worden voordat het gebruikt kan worden? Op zich moet een systeembeheerder dit ook kunnen neem ik aan, dus dat zou dan een mooie oplossing zijn.

Mijn vraag is dan: waarom zou je moeite steken in het aanmaken (en zwaar belasten) van je database, als het toch alleen maar om gegevens gaat die één keer gebruikt worden?

Goed argument, ga ik dus niet aanmaken.

Nogmaals, ik ga het 1 en ander eens uitproberen, dan zullen jullie deze week weer van mij horen.

Mkees
 
This free bar code font may be used by individuals and organizations that have gross annual revenue of less than $500,000 USD or are classified as nonprofit for tax purposes excluding government and military organizations.

Dat vond ik op de site van IDAutomationCode39, dat gaat dus wel een probleem vormen, aangezien mijn bedrijf wel een iets hogere omzet draait..
 
Dat soort problemen moet je wegleggen bij je opdrachtgevers ;) Het punt is dat er oplossingen bestaan en commercieel verkrijgbaar. De meeste internationale handels barcodes zijn in code128. Dat vereist zowel een font als wat programmeer werk, maar het is wel te vinden .
 
Goed, ik ben ondertussen een aardig eindje gevorderd.

Kleine problemen waar ik nu tegen aan loop:
1. Fout melding wanneer tekstvak alleen cijfers mag bevatten wanneer hier letters ingevuld worden. Is er een manier om hierboven een tekstje in beeld te laten verschijnen in plaats van de standaard foutmelding van Access? Ik kan het tekstvakje vinden in de programma code, ik heb alleen geen idee wat ik er bij moet zetten.
2. Wanneer bij het formulier het personeels nummer gekozen wordt, hoe kan ik dan op het rapport hier automatisch naam en werkplaats op laten verschijnen? (staan uiteraard in een tabel)
3. Ik heb nu een formulier gemaakt (zie bijlage) waar het personeel zijn of haar gegevens in kan voeren. Het probleem is echter nu dat hij een werknemer "onthoud". De laatst ingevoerde blijft op de manier zichtbaar zoals in het voorbeeld weergegeven. Ik heb al geprobeerd om als standaardwaarde voor het tekst vak " " te doen, maar zonder het gewenste resultaat.

Wat ingewikkelder probleem (denk ik):
4. Wanneer op het formulier een kolom leeg gelaten wordt voor alle te verzenden artikelen (bijvoorbeeld code voor gevaarlijke stoffen), hoe kan ik er dan voor zorgen dat deze kolom niet zichtbaar wordt op het rapport?
5. Kan ik op het formulier een knop maken waar op geklikt kan worden wanneer er een product toegevoegd moet worden? Dus standaard 1 regel, met een klik op een knop komt er nog een invoer regel bij ect. (zie bijlage) En hoe kan ik er voor zorgen dat dit op het rapport ook fatsoenlijk wordt verwerkt? Onderaan het factuur (op het rapport) staan gegevens als afmeting van de doos en gewicht ect. Deze moeten dan naar beneden opschuiven wanneer er meer artikelen worden toegevoegd.
6. De totale prijs van alle artikelen samen moet onderaan het factuur berekend worden. Nou kwam ik al als probleem tegen dat wanneer een tekstvakje op het rapport geen waarde bevat de optelsom niet gemaakt wordt. (=[Tekst53]+[Tekst73]+ect.). Dit probleem moet uiteraard ook in probleem 5 verwerkt worden.

Dit waren de problemen die ik nu verzameld heb. Hopelijk eenvoudig op te lossen problemen!

Alvast bedankt voor de moeite voor het mee-denken!

Mkees
 
ad 1)
Je kunt een check doen op drie manieren: je kunt een invoermasker maken op het tekstveld zodat de invoer aan een bepaalde voorwaarden moet voldoen (alleen cijfers, alleen tekst etc), je kunt 'live' controleren of een invoer voldoet aan een vooraf vastgelegde opmaak door een gebeurtenis <Bij wijzigen> te maken, zodat je elk ingevoerd teken gelijk controleerd, of je doet een check op de gebeurtenis <Na bijwerken> die in één keer de invoer controleert. In de laatste twee gevallen kun je met een Msgbox een schermpje laten zien met wat de gebruiker verkeerd doet/heeft gedaan.
Ad 2)
In je tabel sla je alleen het personeelsnummer op, wat uiteraard uitstekend is. Voor een rapport voeg je de tabel personeel toe aan de tabel voor het rapport, en vanwege de eerder gelegde koppelingen heb je dan de beschikking over de ontbrekende velden. Een rapport maak je dus meestal op basis van een query.
Ad 3)
Dit kan eigenlijk alleen maar voorkomen als het tekstveld Personeelsnummer niet is gekoppeld aan een tabelveld, of als je het personeelsnummer als Default waarde toewijst aan het tekstveld. Ik vermoed dat het laatste niet he geval is, dus gaat mijn vermoeden naar de eerste mogelijkheid: je zet een personeelsnummer in een niet-gebonden tekstvak. Zowiezo snap ik niet dat je voor het personeelsnummer geen Keuzelijst met invoervak gebruikt, want dan haal je a) de nummers op uit je tabel, en kun je geen verkeerd nummer invoeren en b) koppel je met de wizard de keuzelijst gelijk aan het juiste veld in je tabel.
Ad 4)
Dat hangt heel erg van de opzet van je rapport af. Maar ik vermoed dat je dat met VBA moet regelen.
Ad 5)
Ook weer een kwestie van (vermoed ik) een niet correct opgezette db... Je tabel [Factuur] zou gekoppeld moeten zijn aan een tabel [Factuurregels]. In [Factuur] leg je (met een keuzelijst voor Personeelsnummer) de hoofdgegevens van de factuur vast, en [Factuurregels] bevat een veld FactuurID, dat uiteraard in [Factuur] ook voorkomt en daar het sleutelveld is. Als je dan op basis van [Factuur] en [Factuurregels] een formulier maakt, zul je zien dat [Factuur] een enkelvoudig hoofdformulier is, met [Factuurregels] als doorlopend subformulier op het hoofdformulier staat. En in die variant kun je altijd records toevoegen, en heb je dus geen knop nodig.
Je rapportprobleem bestaat dan niet, want het rapport word automatisch goed opgemaakt op basis van de instellingen uiteraard.
Ad 6)
Ook dit probleem bestaat niet, als je met de juiste structuur werkt; in je rapport maak je een Voettekst sectie (is ook oplossing voor puntje 5) met een tekstvak met de formule =Som([Prijs]). Dus niks veldjes optellen...
 
Ondertussen al een heel eind, ben een beetje zelf gaan knutselen en ben nu zo goed als klaar. Moest naar mijn idee even "een manier van kijken op" leren voordat ik er fatsoenlijk mee aan de slag kon. Programma is eigenlijk heel logisch opgebouwd, je kan er alleen zoveel mee dat je soms de weg nog wel eens even goed kwijt raakt.
Problemen waar ik nu even tegen aan loop:
1. Ik heb nu voor het invoeren van artikelen een tabel gebruikt die naderhand weer leeg gemaakt wordt. Nou zou ik willen dat er maar maximaal 30 artikelen ingevuld kunnen worden waarna de tabel "vol" zit, dus maximaal 30 rijen. Is dit mogelijk?
2. Met een macro heb ik nu zo gemaakt dat het rapport automatisch wordt naar PDF wordt geprint. Kan ik hierbij ook opgeven wat de standaard naam moet zijn? Dus de waarde van 2 tekstvakken gecombineerd? (datum + factuurnummer)

Mkees
 
Laatst bewerkt:
Wat betreft je eerste vraag: een database is niet opgezet om een maximaal aantal records vast te leggen. Dus dat zul je op je formulier moeten regelen. Overigens snap ik niet waarom je een tijdelijke tabel gebruikt om artikelen toe te voegen; dat riekt toch naar een wat vreemd opgezette database...
Je tweede vraag: ik werk niet met macro's, en die is dus niet voor mij :)
 
je kunt text waarden combineren met het "&" teken.

filename = datuminput_textvak.text & factuurnr_textvak.text

bijvoorbeeld.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan