geneste if then

Status
Niet open voor verdere reacties.

lammertc

Gebruiker
Lid geworden
30 nov 2002
Berichten
141
Hallo,
Ik ben al een hele dag aan het klooien met het volgende
ik moet aan aantal artikelen groeperen aan de hand van een aantal hoofdkenmerken en subkenmerken
Hiervoor gebruik ik in de query het statement IIF

IIf («expr.1», IIf («expr»2, «waar», «onwaar») , «onwaar»)
Nu moet deze afvraging een keer of 7 voorkomen vanwege 7 verschillende hoofdsleutels.
de afvraging moet dus zijn
Als waarde 1a waar is, en waarde 1b ook, ken dan de waarde 1c toe aan dit artikel, idem voor sleutel 2 tm 7.
dan krijg ik een formule:

IIf («expr»1a, IIf («expr»1b, waarde1c,
IIf («expr»2a, IIf («expr»2b, waarde2c,
IIf («expr»3a, IIf («expr»3b, waarde3c,
IIf («expr»4a, IIf («expr»4b, waarde4c,
IIf («expr»5a, IIf («expr»5b, waarde5c,
IIf («expr»6a, IIf («expr»6b, waarde6c,
"waarde 7"))))))))))))

Nou heb ik al een keer de afvraging tot 6a gekregen, maar de uiteindelijke waarde "waarde 7" krijg ik niet, alleen een leeg veld.

Wat is er fout aan deze formule?
 
IIF is een leuke functie als je hem niet hoeft te nesten.
Geneste IIF's worden uiteindelijk behoorlijk onleesbaar en daardoor slecht onderhoudbaar.
Wat je beter kunt doen is een functie schrijven in een module.
Die functie moet er dan ongeveer als volgt uit zien:

Public Function fnGetMyValue(mInputValue as String) as String
SELECT Case mInputValue
Case "waarde1"
fnGetMyValue = "waarde1"
Case "waarde2"
fnGetMyValue = "waarde2"
etc.
etc.
Case Else
fnGetMyValue = "foutieve invoerwaarde"
End Select
End Function

In je query roep je je functie dan aan middels
Waarde: fnGetMyValue ([JeVeldNaam])

Of in het SQL statement:
fnGetMyValue ([JeVeldNaam]) as waarde
 
Je hebt overal een c staan achter het nummer van de waarde behalve bij 7. Moet dat dan ook niet 7c zijn?
Overigens is de module van Bartuls verreweg te verkiezen!
Joop
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan