[Access] als dan functie in een query

Pagina: 1
Acties:
  • 671 views sinds 30-01-2008
  • Reageer

  • shockme
  • Registratie: Oktober 2003
  • Laatst online: 02-06-2022
Ik zit met een probleempje.
Ik wil in mijn database als ik een factuur uitdraai en artikelen selecteer er gecontroleerd wordt of van dat artikel wel voldoende op voorraad is en zo niet een melding op het scherm poept.

Nu zou hij bij verkocht aantal bij wijziging een query uit kunnen voeren.
Ik heb dit in elkaar gedraaid.
code:
1
2
3
SELECT ARTIKELEN.aanv, Forms!FACTUUR!vaantal AS verkochtewaarde, ARTIKELEN.artknr
FROM ARTIKELEN
WHERE (((ARTIKELEN.artknr)=[Forms]![FACTUUR]![artknr]);


Beschik dus over een Tabel ARTIKELEN waar "aanv" staat voor het aantal in voorraad en artknr spreekt voor zich

Nu haal ik de waardes op uit het formulier dit gaat allemaal aardig, maar ik wil dus nu dat het gecontroleerd wordt.
Dit moet als het goed is kunnen met het IIF commando, maar krijg het nog niet erg aan de praat.

code:
1
 IIF [Forms!Factuur!vaantal] > aanv THEN "blaat te weinig in voorraad"


Maar dit werkt dus niet, hopelijk heeft iemand wat waardevolle suggesties _/-\o_

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 14:53

Dido

heforshe

Heb je al eens op F1 gedrukt om te kijken wat de syntax is van het IIF statement :?

Uit mijn hoofd wil je iets in de trant van
code:
1
IIF ([Forms!Factuur!vaantal] > aanv, "blaat te weinig in voorraad", "blaat er is genoeg")

En dat hoort dan uiteraard in je SELECT te staan, niet los :P

[ Voor 12% gewijzigd door Dido op 29-03-2004 14:45 ]

Wat betekent mijn avatar?


  • shockme
  • Registratie: Oktober 2003
  • Laatst online: 02-06-2022
al meer dan eens op F1 gedrukt! 8)

En een boek geraadpleegd waar netjes staat:
code:
1
IIF ( [waarde1] < 1000 )

Maar al hou ik het simpel zonder foutbericht zoals bv hierboven, dan geeft hij aan dat de syntax niet goed is 8)7

[edit]en dat had ik al door natuurlijk dat het niet los moet staan :P

[ Voor 15% gewijzigd door shockme op 29-03-2004 14:51 ]


  • shockme
  • Registratie: Oktober 2003
  • Laatst online: 02-06-2022
en jou syntax ook even geprobeerd natuurlijk
code:
1
IIF ([Forms!Factuur!vaantal] > aanv, "blaat te weinig voorraad", "blaat er genoeg")


met verwijdering van "is" en "in", wat in een nl acces gaat dat natuurlijk fout :+

Maar dan krijg ik nu de foutmelding: De Expressie die u heeft opgegeven, bevat een functie met een ongeldig aantal argumenten

  • shockme
  • Registratie: Oktober 2003
  • Laatst online: 02-06-2022
shockme schreef op 29 maart 2004 @ 14:56:
en jou syntax ook even geprobeerd natuurlijk
code:
1
IIF ([Forms!Factuur!vaantal] > aanv, "blaat te weinig voorraad", "blaat er genoeg")


met verwijdering van "is" en "in", want in een nl acces gaat dat natuurlijk fout :+

Maar dan krijg ik nu de foutmelding: De Expressie die u heeft opgegeven, bevat een functie met een ongeldig aantal argumenten

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 14:53

Dido

heforshe

Je zet het (zi eook mijn edit) toch wel in je SELECT, he?
(Niet lullig bedoeld, maar dat zou een hoop verklaren :) )

Wat betekent mijn avatar?


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 14:53

Dido

heforshe

shockme schreef op 29 maart 2004 @ 14:56:
en jou syntax ook even geprobeerd natuurlijk
code:
1
IIF ([Forms!Factuur!vaantal] > aanv, "blaat te weinig voorraad", "blaat er genoeg")


met verwijdering van "is" en "in", wat in een nl acces gaat dat natuurlijk fout :+

Maar dan krijg ik nu de foutmelding: De Expressie die u heeft opgegeven, bevat een functie met een ongeldig aantal argumenten
Is en in tussen aanhalingstekens mag geen probleem zijn hoor.

Testquerietje dat ik hier heb gaat uitstekend:
code:
1
2
SELECT FLS.*, iif(FLS.flsnum >1, "JA", "Nee") AS TEST
FROM FLS;

Wat heb je anders, en wat voor foutmelding krijg je? Beter lezen :X

Overigens: keywords in strings (tussen aanhalingstekens) valt ie echt niet over hoor: dit werkt ook:
code:
1
2
SELECT FLS.*, iif(FLS.flsnum >1, "Select from", "Is this in wrong or and false true") AS TEST
FROM FLS;

[ Voor 16% gewijzigd door Dido op 29-03-2004 15:01 ]

Wat betekent mijn avatar?


  • shockme
  • Registratie: Oktober 2003
  • Laatst online: 02-06-2022
Heb nu als code staan:
code:
1
2
3
4
SELECT ARTIKELEN.aanv, Forms!FACTUUR!vaantal, 
ARTIKELEN.artknr, IIf(Forms!Factuur!vaantal>aanv,"blaat te weinig voorraad","blaat er genoeg") AS Expr1
FROM ARTIKELEN
WHERE (((ARTIKELEN.artknr)=[Forms]![FACTUUR]![artknr]));


Wat hij nu doet is netjes in veld zetten "blaat er genoeg" ongeacht of vaantal meer of minder dan aanv is.

En nu nog even een lompe vraag erbij, hoe krijg ik dat dan zo dat hij een msgbox op mn scherm gooit?


Je heb gelijk hij valt niet over is en in!

[ Voor 10% gewijzigd door shockme op 29-03-2004 15:06 ]


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 14:53

Dido

heforshe

shockme schreef op 29 maart 2004 @ 15:06:
Wat hij nu doet is netjes in veld zetten "blaat er genoeg" ongeacht of vaantal meer of minder dan aanv is.
Maak er eens Artikelen.aanv van, of zet aanv in wat je terug wilt hebben (om te debuggen dus :P ) (iif(foo>bar, foo, bar) dus, dan zie je eerder waarom hij de vergelijking niet goed lijkt te doen)
En nu nog even een lompe vraag erbij, hoe krijg ik dat dan zo dat hij een msgbox op mn scherm gooit?
Dat zul je applicatief moeten oplossen. SQL maakt geen messageboxen voor je, je krijgt een verzameling records terug, wat je daar verder mee doet mag je helemaal zelf weten :)
Je heb gelijk hij valt niet over is en in!
En da's maar goed ook ;) Zou wel erg lastig proggen worden alsstrings eerst gescand worden op reserved words :)

Wat betekent mijn avatar?


  • shockme
  • Registratie: Oktober 2003
  • Laatst online: 02-06-2022
even mezelf weer bij mekaar geraapt 8)
en alles even goed onder de loep genomen nu werkt mn vergelijking in iedergeval goed :*)

[quote]Dat zul je applicatief moeten oplossen. SQL maakt geen messageboxen voor je, je krijgt een verzameling records terug, wat je daar verder mee doet mag je helemaal zelf weten

applicatief is duur woord voor vba? ;)

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 14:53

Dido

heforshe

shockme schreef op 29 maart 2004 @ 15:36:
applicatief is duur woord voor vba? ;)
In dit geval wel ja, het is alles wat je zelf binnen je applicatie oplost (itt wat je de database laat doen bijvoorbeeld)

Wat betekent mijn avatar?


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 26-12 15:02
Als je een Nederlandse Access VBA hebt dan is je lijstscheidingsteken waarschijnlijk een puntkomma.

Access wil dan ook dat je argumenten scheidt door een puntkomma. ( Is de meest achterlijke functionaliteit die ooit bedacht is )

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1