query's MS Acces 2010

Status
Niet open voor verdere reacties.

elienleirman

Nieuwe gebruiker
Lid geworden
9 dec 2013
Berichten
3
Wij zoeken dringend hulp!
Wij hebben via een berekening een puntensaldo berekend. Als dit saldo aan enkele voorwaarden voldoet, moeten we van het puntensaldo een bepaald bedrag aftrekken. dit doen wij via een selectie query. Ons probleem is nu dat we niet kunnen verder rekenen met dat nieuw puntensaldo. We willen dus het nieuwe puntensaldo gebruiken om de voorwaarden opnieuw te controleren en zo steeds verder te werken met dit nieuwe puntensaldo. Hoe kunnen wij dit doen? is dit via een bijwerkquery ofzo?
Dank bij voorbaat!
 
Als je snel hulp wilt (overigens niet ons probleem of belang dat je in tijdnood zit ;) ) dan moet je er minstens een voorbeeldje bij doen. Nu snap ik eigenlijk niet wat je wilt. Ik snap dat je een berekening maakt in een query. Een query is een zgn. 'dynaset'; een dynamische set gegevens die verandert als de tabelgegevens veranderen. Dat geldt ook voor je berekeningen. Een saldo is afhankelijk van een beginstand, en toegevoegde of afgetrokken punten. Meer is het volgens mij niet. Dus wat je er verder mee wilt doen? Geen idee...
 
Hallo octafish, denk dat het hier om hetzlfde probleem gaat als het mijne, namelijk nieuwe berekende gegevens opslaan in tabel, en als query dan naar dit veld verwijst, de query dan dus met de nieuwe waarden rekent
 
En zoals ik in jouw draadje heb uitgelegd: geen goed idee om berekeningen die dynamisch zijn op te slaan :)
 
dus bijvoorbeeld:
in kolom 1 staan er gespaarde punten van een account bv. 20 punten
in kolom 2 staan de punten die men nodig heeft bij deze aankoop bv. 15
in de query controleren wij eerst of de gespaarde punten groter zijn dan de benodigde punten: als waarde kolom 1>waarde kolom 2; waarde kolom 1 (20) - waarde kolom 2 (15) = 5
wij willen verder rekenen met deze waarde, dus met deze 5 dus de bij de volgende aankoop willen wij dat deze waarde 5 in de eerste kolom staat en dat deze dan terug vergeleken wordt met een nieuwe waarde in kolom 2.
als waarde kolom 1 < waarde kolom 2 dan willen we gewoon verder werken met de waarde uit kolom 1, dus met 20
 
Ik snap nog steeds niks van je voorbeeldje; er zit voor mijn gevoel weinig logica in. Om te beginnen: als je een aantal artikelen bestelt, is het veel logischer om de totale waarde te berekenen, en die te vergelijken met het saldo. Daarbij is het nog wel mogelijk om op het (doorlopende) formulier met het saldo op het hoofdformulier te rekenen, waarbij je dan een berekend veld maakt op het hoofdformulier waarin je het restsaldo laat zien (=saldo - bestelling) en op basis daarvan de keuzelijst met beschikbare artikelen filtert. Op die manier hou je altijd een realistische artikelenlijst over. In jouw geval zou je bijvoorbeeld het volgende kunnen krijgen:
1. saldo 200 - artikel = 80 rest = 120
2. saldo 120 - artikel = 100 rest = 20
3. saldo 20 - artikel = 60 rest = -40 --> bestelling stopt, want saldo negatief
4. saldo -40 - artikel = 50 rest = -9---> kan al niet meer besteld worden want saldo negatief

Terwijl, als je artikel 2 niet bestelt, je gewoon artikel 3 en 4 kan bestellen, want dan hou je nog saldo over.
Ik zou de gebruiker dus lekker zelf laten bestellen, en alleen checken of het saldo dekkend is of niet, en op basis daarvan de bestelling door laten gaan. Bij negatief saldo mag de gebruiker zelf artikelen verwijderen tot de bestelling weer klopt. Zoals je zelf ook doet in de supermarkt als je saldo ontoereikend is :)
 
Ik denk dat de vraag niet helemaal duidelijk is:
Wij moeten een spaarkaartsysteem ontwerpen, dus bij de aankoop van producten krijgen klanten punten. Meerdere klanten kunnen tot 1 account behoren.
Dus telkens als een lid van een account artikelen aankoopt wordt het puntensaldo van dat account verhoogd. Ofwel betaald de klant cash ofwel betaald de klant met reeds gespaarde punten. De klant kan enkel met punten betalen als er al genoeg punten staan op het puntensaldo van het account. Stel nu dat lid 1 van het account vandaag artikelen koopt, hiermee verdient hij 20 punten. Deze 20 punten zijn de eerste punten die het account verdient, dus de aankoop wordt cash betaald en de 20 punten komen op het puntensaldo van het account. Morgen koopt lid 2 van hetzelfde account ook artikelen, hij heeft 15 punten nodig om deze artikelen te kunnen betalen met punten. Het puntensaldo op het account (20) wordt dus eerst vergeleken met de benodigde punten voor deze aankoop (15). Dit saldo volstaat dus 20 - 15, er wordt niet cash betaald maar de 15 punten worden afgetrokken van het puntensaldo van het account. Dit saldo bedraagt dus na de aankoop nog slechts 5 punten. Als er overmorgen nog een aankoop wordt gedaan dan mag slechts rekening worden gehouden met het saldo van 5, en wij weten niet hoe we dit moeten doen. Nu ziet onze query er zo uit:
kolom 1 kolom 2 kolom 3 kolom 4
aankoopnummer saldo account benodigde punten resultaat van kolom 2 - kolom 3
1 0 5 0
2 20 15 20 - 15 = 5 -> wij willen deze 5 dus in kolom 2 krijgen zodat de volgende keer met deze waarde wordt gewerkt
 
Als er overmorgen nog een aankoop wordt gedaan dan mag slechts rekening worden gehouden met het saldo van 5, en wij weten niet hoe we dit moeten doen.
Je hebt het over zaken die niet zo ingewikkeld zijn; op het moment dat er een nieuwe transactie is, weet je het saldo namelijk: dat is het beginsaldo (0) + [gespaarde punten] - [verzilverde punten]. Een simpele query. De uitkomst daarvan kun je gewoon laten zien op je hoofdformulier waarin je de aankopen vastlegt. In het subformulier registreer je de losse artikelen, en op basis daarvan bereken je in het subformulier de verzilverde punten. Op het hoofdformulier verreken je 'live' het saldo minus de nieuwe uitgaven.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan