Berekenen nog te leveren...

Status
Niet open voor verdere reacties.

Rene71

Gebruiker
Lid geworden
2 aug 2012
Berichten
133
Goedemiddag, Iedereen een HAPPY NEW YEAR :D:thumb:

ik zit met het volgende en kom er niet uit, ik heb al een aantal voorraad voorbeelden bekeken en snap het eigenlijk nog steeds niet

ik heb een tblOrderregel met een Primaire Sleutelveld ProductieID en een veld AantalBesteld
in de tblPakbonregel een veld AantalGeleverd
de uitkomt die ik graag wil hebben in (NTL) NogTeLeveren

opzich niet zo moeilijk dacht ik :) AantalBesteld - AantalGeleverd = NogTeLeveren

hoe weet ik bij een nieuwe regel wat het NogTeLeveren aantal is van het ProductieID ?

bovenstaande is voor het maken van vrachtbrieven/pakbonnen

wat dan ook wel handig is, is een lijst met nog te leveren ProductieID's met het nog te leveren aantal er op
maar in die Qry heb ik volgens mij de relatie niet goed gelegd tussen de twee tabellen


voorbeeldje (die ik alweer een beetje werkbaar gemaakt heb) :)
Bekijk bijlage pb _test.rar
 
Ik zie geen NogTeLeveren. En wat is dat "uberhaupt: een tabel, een query? Een tabel lijkt mij niet handig, want de waarde is een berekening, en die sla je niet op. Nergens voor nodig namelijk, omdat je het verschil altijd kunt berekenen. Bovendien is de waarde variabel, omdat AantalGeleverd verandert, en dus ook de uitkomst. Dat wil je dan echt niet (tenminste: dat zou je niet moeten willen) ook nog eens in een tabel moeten aanpassen.
 
de berekening nogteleveren staat in de qryPakbonregel
nogteleveren: [AantalBesteld]-[AantalGeleverd]

de waarde in het berekende veld nogteleveren
heb ik nodig voor een volgende record
tot de waarde 0 (nul) is
dan is het ProctieID volledig geleverd
 
Ik snap nog steeds je vraag niet. Je berekent het aantal na te leveren goederen correct, dus dat is het probleem niet. Ik zie niet waar je dat 'volgende record' hebt staan.
 
met een volgende record bedoelde ik. een nieuw record van een nieuwe pakbon of een nieuwe unit

voorbeeld
in tblOrderregel staat Aantalbesteld = 10

vandaag lever ik van dat ProductieID
(uit de tblPakbonregel) AantalGeleverd =2

ik moet er dus nog leveren
NogTeLeveren = 8

die 8 stuks lever ik volgende week of hoe dan ook uit
dat is de Volgende "nieuwe" Record voor in een nieuwe frmpakbon of een nieuwe Unit


wanneer ik dezelfde ProductieID weer wil gaan leveren krijg ik er weer 10 stuks te zien
mijn huidige berekening NogTeLeveren klopt dan wel, maar ik kan er niets mee
moet dus wat anders hebben

ik heb een QryAantal_NTL gemaakt van de tblOrderRegel en tblPakbonregel
waarbij ik de Som van AantalGeleverd bereken
Group By: Productie ID
Expressie: NTL: [AantalBesteld]-Nz([SomVanAantalgeleverd];0)
om te zien hoeveel er geleverd zijn van een ProductieID en nog geleverd moeten worden

wat ik toen gedaan heb is in de qrypakbonregel de QryAantal_NTL toegevoegd
daarmee was ik van plan de berekening te maken
nogtleleveren: [NTL]- [AantalGeleverd]
maar dan is de qry helemaal leeg

en hoe meer ik klooi hoe erger dat het wordt :(
blanco formulieren, formulier niet meer kunnen openen, tot zelf het vastlopen van de dB
ff opnieuw beginnen dan maar :)



wat de werking van frmpakbon is !
dit is het hoofdformulier hier kies ik het te verzenden Ordernr
(en ook de klant, afleveradres, gegevens (staan er nu niet in ivm de grote van het bestand))

in de frmpakbon zit een subformuliertblUnit
waar ik opgeef wat voor een type verpakking het is, pallet of doos, .....
met daarbij de lengte breedte hoogte en gewicht en evt opmerkingen van die "Unit"
dit is dan een Unit en hier kan ik ook meerdere Units maken

en in het subformuliertblUnit zit SubfrmPakbonregel
hierin komt of komen het ProductID met de bijbehorende gegevens en het geleverde aantal AantalGeleverd

dit zijn de producten die er in een Unit zitten


het klopt dat in de formulieren subfrmpakbonregel en frmpakbonregel niet de juiste berekeningen staan
deze heb ik uit nood weer aangepast aan de qrypakbonregel zodat ik weer gegevens in de formulieren zag staan met de simpele berekening

omdat er een Private Sub Geleverd_AfterUpdate() in de frmpakbonregel AantalGeleverd zit heb ik dit maar even zo gelaten.
dit is dan wel wat de uitkomst moet worden op het formulier, is het nog te leveren aantal 0 dan krijgt het een status 5 en komt het niet meer voor in de keuzelijst
en bij nog te leveren aantal 1 of meer krijgt het een status 4


hoop dat dit wat meer licht brengt in de duisternis :)
zie dat de berekening in qryAantal_NTL er niet in zet
maar ziet er zo uitqryAantal_NTL.jpg
 
Laatst bewerkt:
En toch is het redelijk simpel. Zoals ik al zei: je query rekent uit hoeveel er nog open staat op een artikel in een order. DUs bij een volgende pakbon kun je die waarde simpel ophalen met een DLookup die je bijvoorbeeld triggert op een keuzelijst. Ik zou sowieso bij een order dan ook een koppeling leggen (één-op-veel) met de tabel Pakbon, want je wilt normaal gesproken per order kunnen zien welke pakbonnen er zijn. Je hebt in [tblPakbonregel] ook een veld [Ordernr], maar ik zie daar het nut niet van in. Een ordernummer hoort bij een pakbon, niet bij een pakbonregel. Als je dus een ordernr hebt, weet je welke pakbonnen, en weet je welke hoeveelheden van een besteld artikel ([tblOrderRegel]) zijn geleverd. Met DLookup weet je dus het verschil. Of je opent de recordset die het verschil uitrekent, en die koppel je aan je pakbonformulier.

Ik vind dat je het formulier [frmPakbon] alleen op de tabel [tblPakbon] moet baseren, want de Ordertabel heeft er verder niks mee te maken. En ik zou dat formulier dus als subform op je orders zetten, want daar hoort het in mijn ogen thuis.
 
Bedankt Michel :thumb:
ik heb de optie Dlookup gebruikt in het frmPakbonRegel (omdat het met een Recordset mij niet lukt)

in het veld AantalGeleverd heb ik de after update code zitten
Code:
Private Sub AantalGeleverd_AfterUpdate()

If (Me.nogteleveren) = 0 Then
    Me.StatusID = 5
Else
    Me.StatusID = 4
    End If
If Me.StatusID = 4 Then
Me.[PakbonTekst].Value = ("**DEELLEVERING**")
Else
Me.[PakbonTekst].Value = ""

DoCmd.Save

'Requery qryAantal_NTL ?

Televeren = DLookup("NTL", "qryAantal_NTL", "ProductieID=" & ProductieID)

End If


End Sub
en om de gegevens op te halen Bij laden
Code:
Televeren = DLookup("NTL", "qryAantal_NTL", "ProductieID=" & ProductieID)


het veld [nogteleveren] is dus overbodig volgens mij, geeft ook een negatief resultaat als ik het formulier weer opent

hoe kan ik op het veld TeLeveren en/of de qryAantal_NTL een Requery uitvoeren?

zodat er na de after update code het juiste aantal qryAantal_NTL (label Openstaand op het formulier) staan in het veld TeLeveren
zodat ik de boenstaande code kan aanpassen met If (Me.TeLeveren) = 0 Then

er is een ander probleempje dat ik niet snap in het SubfrmtblUnit bij het openen van de frmPkbon
staat er in het SubfrmtblUnit Totaal Unit/ Coli 2 het in het Grotere vette tekst Staat Unit 1 van 1 maar dat moet zijn Unit 1 van 2
als ik op de knop laatste Unit klikt (derde van links) gaat het weer wel goed. maar bij het openen dus niet
maar eigenlijk is dit voor een andere draadje :o

http://we.tl/hTkW5kxOD7
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan