kolom met korting OF toeslag, hoe de verrekenen

Status
Niet open voor verdere reacties.

emel01

Gebruiker
Lid geworden
10 jan 2008
Berichten
146
hi
ik heb een kolom "prijs" en een kolom "korting/toeslag" , deze laatste kan dus positief of negatief zijn.

maar hoe bereken ik nu de eindprijs (nieuwe kolom). als kolom "korting/toeslag" is positief dan prijs+ "korting/toeslag", als kolom "korting/toeslag" is negatief dan prijs-"korting/toeslag"

ik heb nu deze:

Prijs na Korting of Toeslag:

IIf([ContractExport]![bedrag K/T]<0;[ContractExport]![factuurprijs]-[ContractExport]![bedrag K/T];

IIf([ContractExport]![bedrag K/T]>0;[ContractExport]![factuurprijs]+[ContractExport]![bedrag K/T];""))

maar die geeft problemen.
 
1. Wat voor problemen geeft ie dan.
2. Post je mdb ((zippen, niet rarren), dan is het probleem zo gevonden en opgelost.
 
ik ben nu al een half uur bezig de database te comprimeren, dit lukt echter niet. blijft ontzettend groot. bron tabel bijna leeggehaald, plus koppelingsbeheer aangepast, onnodige tabellen eruit gehaald. blijft echter op 40 MB staan. dit is echt weird.

ik kan dus niet zippen...

Prijs na Korting/Toeslag: IIf(ContractExport![bedrag K/T]<0;ContractExport!factuurprijs-ContractExport![bedrag K/T];IIf(ContractExport![bedrag K/T]>0;ContractExport!factuurprijs+ContractExport![bedrag K/T];""))
 

Bijlagen

  • error.png
    error.png
    23,4 KB · Weergaven: 41
In principe moeten alle kolommen in een query waar je gebruikt maakt van een group by clausule gebruike maken van een statistische functie.
Dit heeft niets met access te maken, dat zijn gewoon de regels voor SQL.
In access betekent dit dat bij een kolom waar in het vakje weergeven een vinkje staat dat er bij die kolom bij Totaal Group By of een functie als Max of Min moet staan. Expressie mag daar dan niet staan!
Bij jou staat in de kolom met IIF contstructie Expressie. Dat is de oorzaak van de foutmelding, niet de IIF contructie.
 
ik heb deze gewijzigd in group by, tevens helemaal uitgeschakeld, dan loopt de query maar staat er in de kolom "prijs na korting" in alle cellen "#fout" :O(((

maar bedankt voor de uitleg over de clausule. zit echer nog altijd vast....
 
hi

ik heb de formule in mijn eigen query gezet, nu loopt ie wel, maar hij doet de kortings kolom altijd bij de prijskolom optellen, ongeacht de negatieve of positieve waare van de kortin.... :( als de korting 0 is dan geeft ie sowieso # fout......
 
solved.

zie hier:

Factuurprijs na Korting/Toeslag: IIf(ContractExport![bedrag K/T]<0;ContractExport!factuurprijs+ContractExport![bedrag K/T];IIf(ContractExport![bedrag K/T]>0;ContractExport!factuurprijs+ContractExport![bedrag K/T];IIf(ContractExport![bedrag K/T]=0;ContractExport!factuurprijs;"")))
 
Logisch.
Code:
IIf([ContractExport]![bedrag K/T]<0;[ContractExport]![factuurprijs]-[ContractExport]![bedrag K/T];

IIf([ContractExport]![bedrag K/T]>0;[ContractExport]![factuurprijs]+[ContractExport]![bedrag K/T];""))

Je controleert alleen veld < 0 en veld > 0.
Eén van de twee van een <= of >= voorzien is logischer.
Ook geef je bij de tweede iif bij de fout uitkomst een string terug terwijl de andere situaties een bedrag zijn (numeriek waarschijnlijk, dat is niet uit de bijgesloten toepassing op te maken).

Ik maak voor dit soort zaken meestal een functie in vba en roep die aan in de query.
Dan kun je het veel overzichtelijker met een select case statement afhandelen
Die ziet er dan ongeveer zo uit

Code:
public function fnGetBedrag(mBedragKT as decimal) as decimal
dim temp as decimal
SELECT CASE mBedragKT
CASE < 0
temp = .....
CASE 0
temp = ...
CASE > 0
temp = ....
END SELECT
fnGetBedrag = temp
end function
 
Simpeler

Toch ziet de argeloze buitenstaander iets veel simpelers, als de toeslag/korting positief is bij een toeslag en negatief bij een korting, dan kun je die gewoon bij de basisprijs optellen:

Code:
[factuurprijs] + [bedrag K/T]

Of heb ik nu de hele diskussie gemist?
 
Laatst bewerkt:
Sesam, scherrup!:thumb:
Was mij niet opgevallen..... Tja, het is ook dinsdag.....:o
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan