Conditietabel maken en wijzigen

Status
Niet open voor verdere reacties.

Limbodirk

Gebruiker
Lid geworden
8 feb 2012
Berichten
6
Ik zit met het volgende probleem, namelijk ik wil een (automatische) conditietabel maken op basis van een tabel met 3 velden: KlantID (relatie met Klantenkaart), ConditiegroepID en Korting. Het veld ConditiegroepID refereert weer aan een tabel Conditiegroep (met ConditiegroepID en Omschrijving als velden) omdat voor iedere klant dezelfde groepen gelden, echter met mogelijk andere kortingen. Ook kunnen deze conditiegroepen worden uitgebreid of komen te vervallen.

De kortingen wil ik vervolgens met een Query via de KlantID en Condtiegroep van het artikel ophalen in een order/ factuur, etc.

Nu kan ik redelijk eenvoudig een tabel maken in Excell en deze dan importeren in Acces. Dit is ook niet echt bezwaarlijk, want zo vaak wijzigen de Conditiegroepen niet. Maar als dit automatisch kan, zou dit wel fijn zijn. Ik heb hier lang over zitten piekeren en zoeken, maar ik kom er niet uit. Misschien dat ik te moeilijk wil denken, maar ik zie in ieder geval nu geen mogelijkheid hiervoor.

Wie schijnt me wat licht op dit probleem?

Alvast bedankt.
 
Ik snap nog niet helemaal wat je wilt; blijkbaar heb je al tabellen met klantgegevens en Condities; wat is dan het probleem? Als ik het goed begrijp is de korting niet afhankelijk van de Conditiegroep, dus die zou je altijd moeten kunnen uitrekenen. En waar leg je de kortingen vast?
 
Octafish,

Dank voor je reactie. ik zal proberen het zo simpel mogelijk te omschrijven.

Als er een order wordt aangemaakt wordt hieraan vanzelfsprekend een klant (KlantID) gekoppeld.
Tevens is aan een orderregel (artikel) een conditiegroep (kortingsgroep) gekoppeld. Deze koppeling hangt in de tabel Artikel.
Voor iedere klant wordt vooraf voor iedere conditiegroep op enig moment een korting bepaald. Dit wordt gewoon handmatig in formulier (op basis van tabel ConditiegroepID) ingevuld, maar de kortingen kunnen dus per klant verschillen voor die betreffende conditiegroep.

Als invoerveld in dat formulier gelden dus de kortingen, maar ik had graag dat de conditiegroepen automatisch als kolomkop worden weergegeven. Met andere woorden, als ik het formulier open voor de kortingen in te vullen, moet de klantID worden overgenomen (logisch, maar simpel), maar daar moeten dus ook alle geformuleerde conditiegroepen verschijnen, ook als deze ondertussen zijn uitgebreid met nieuwe groepen.

In de order worden de ingevoerde kortingen aan de hand van de klantID en Conditiegroep berekend/ opgezocht en in de berekening van de verkoopprijs meegenomen.

Ik hoop dat dit wat duidelijker is geworden.
 
Ik snap nog steeds niet wat je nu wilt, vrees ik.... Ik begrijp dat je een tabel Artikelen hebt, die je koppelt aan Orders, want dat is redelijk standaard. Ik snap ook dat je een tabel met kortingen hebt, die je condities noemt, die is gekoppeld aan Artikelen. Dus voor één artikel kun je verschillende kortingsrecords maken. Ik vermoed dat die kortingen op aantallen zijn gebaseerd? Maar je hebt ook nog eens aparte kortingspercentages voor verschillende klanten. En daar raak ik de draad een beetje kwijt: heb je per klant een apart kortingspercentage dat voor alle artikelen geldt, of heb je per klant per artikel een eigen korting, of per klant per artikel per conditie een eigen korting?

Normaal gesproken is het vrij simpel om een keuzelijst te vullen met de condities per artikel; die afhankelijkheid heb je namelijk al via de tabel Artikel en Artikel_Condities. Maar ik zie dus niet hoe je de klant variabelen opslaat, want je geeft aan dat je dat handmatig invult. Maak anders een voorbeeldje, dat helpt vermoedelijk veel beter!
 
Dus voor één artikel kun je verschillende kortingsrecords maken. Ik vermoed dat die kortingen op aantallen zijn gebaseerd? Maar je hebt ook nog eens aparte kortingspercentages voor verschillende klanten. En daar raak ik de draad een beetje kwijt: heb je per klant een apart kortingspercentage dat voor alle artikelen geldt, of heb je per klant per artikel een eigen korting, of per klant per artikel per conditie een eigen korting?

Aan een artikel (of een groep van artikelen) hangt een kortingscode (conditiegroep). Per klant kan er een afwijkende korting voor deze specifieke code gelden.
M.a.w. artikel X geeft bij klant A 20% korting, maar bij klant B bijvoorbeeld 25% korting.

Bijgevoegd een voorbeeld met een tabel (TBL Klantcondities) waar het principe duidelijk moet zijn. De kolom KlantID spreekt voor zich. De kolommen 1 t/m 10 geven de kortingscodes/ conditiegroepen weer. De gegevensvelden zijn de toegekende kortingen per klant, per kortingscode. In de order wordt aan de hand van de KlantID EN de kortingscode de korting opgezocht voor dat artikel. De kortingscode is dus aan het artikel gekoppeld.

Nu is eigenlijk de vraag of de conditiegroepen uit de tabel kunnen worden geïmplementeerd in de tabel/ formulier Klantcondities.
 

Bijlagen

  • db1.zip
    10,2 KB · Weergaven: 27
Leg eerst je db eens uit, want als ik het moet zeggen, klopt daar niet zoveel van. En dan met name de tabel TBL Klantcondities; geen idee hoe ik die moet lezen:

KlantID 1 2 3 4 5 6 7 8 9 10
1 10 10 15 5 5 20 50
2 10 15 15 5 5 15 55 30
3 12 15 10 8 8 25 45 10 33 5
 
Excuses voor de late reactie, maar hier alsnog.

De database is meer als voorbeeld bedoeld en niet als database. De TBL Klantcondities moet je lezen als volgt:

Stel je hebt een klant geselecteerd met klantID 2. Vervolgens voer je een artikel in met conditiegroep (kortingsgroep) 6. In de TBL Klantcondities moet dus de conditiegroep 6 worden opgezocht in rij 2 (want dit is je klant). De uitkomst hiervan is de korting, namelijk 15(%).

De vraag is dus: hoe maak je een dergelijke matrix vanuit meerdere tabellen? Misschien dat ik het te moeilijk wil maken, maar ik heb iets dergelijks al eens gezien, dus het zou moeten kunnen. De invoer zag eruit zoals in TBL Klantcondities; de rijen en kolommen werden automatisch aangemaakt vanuit andere tabellen, namelijk Klanten en Conditiegroepen.

Ik hoop dat het hiermee wat duidelijker is geworden.
 
Je denkt in Excel termen, waarbij je in een matrix kan zoeken met bijvoorbeeld de Index functie. Access kan dat niet, dus dat zou je ook niet moeten willen nabouwen. Wat je gezien hebt, is vermoedelijk een Kruistabel query, waarin je de gegevens wel kunt tónen in een matrix overzicht. Maar dat is (hoewel niet onmogelijk) niet hoe je werkt in een database. Want voordat je de gegevens kunt laten zien in een kruistabel, moet je ze eerst op de juiste manier hebben opgeslagen. En dat is: in een tabel waarin je een koppeling maakt tussen KlantID en Kortingsgroep. Voor Klant 1 maak je in die tabel dus 7 records, met steeds KlantID 1, en de juiste kortingsgroep.
Als je dat gedaan hebt, maak je op een formulier twee keuzelijsten met invoervak: de eerste om de klant te kiezen, de tweede laat de voor de klant aangemaakte kortingrecords zien.
 
Daar was ik al bang voor, want jou oplossing had ik enigszins ook al in gedachten.

Als ik het dus goed begrijp is het automatisch bijwerken van conditiegroepen dus haast onmogelijk of zowat niet te doen.
 
Op basis van deze informatie
Aan een artikel (of een groep van artikelen) hangt een kortingscode (conditiegroep). Per klant kan er een afwijkende korting voor deze specifieke code gelden.
M.a.w. artikel X geeft bij klant A 20% korting, maar bij klant B bijvoorbeeld 25% korting.
beschrijf je exact de situatie die ik in mijn laatste antwoord gaf: een aparte tabel waarin je de KlantID en de Kortingsgroep met de korting vastlegt. In die tabel krijg je dus een record met KlantID = 1, Conditiegroep=1 en Korting = 20%. Het tweede record is dan: KlantID = 2, Conditiegroep=1 en Korting = 25%. Etc.

Wat jij wilt (een 'automatische tabel') bestaat niet. Althans: dat heet in Access een query. Dat kun je zien als een dynamische tabel, die gegevens in tabelvorm laat zien op basis van gegevens in tabellen die kunnen veranderen. Het resultaat in de query verandert dan mee, en dat maakt de query dan dynamisch.
De feitenlijke beschrijving die je doet, is ook niet veel anders dan omschrijven wat er gebeurt als je keuzelijsten maakt die afhankelijk zijn van andere gegevens. Hoe je die keuzelijsten toepast, is nog steeds niet echt duidelijk. Ik snap namelijk nog steeds niet wat je nu echt wilt. Voor zover ik het kan overzien wil je vrij normale functionaliteit gebruiken, die goed te maken is in Access. Alleen niet met de tabellen die je nu hebt.
 
Laatst bewerkt:
Dat is duidelijk, heb nu even de bevestiging gekregen dat ik te moeilijk was aan het denken.
Heb de richting weer gevonden.

Dank je!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan