Opgelost IIf in Quiries

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.
De berekening die je beschrijft, zit er niet in. Ik heb 'm er in gezet (de foute , -> ; verbeterd) en hij werkt prima.
 

Bijlagen

Klopt jouw versie werkt.

Als ik deze copier naar mijn eigen database en plaats in de Query dan krijg ik toch weer de foutmelding.
Ook al doe ik in Debug de Compile Test komt er geen fout naar voren!

Nog een idee?
 
In de Debug zul je geen fouten tegenkomen als je geen VBA gebruikt. De IIf functie zou dan ook goed moeten werken. Er zal, vermoed ik, toch iets corrupt zijn in jouw database. Het feit dat de aangepaste versie wél werkt, en de gekopieerde formule het dan niet doet, is vreemd. Ook niet als je de complete SQL plakt in het SQL venster?

Test 1:
Code:
SELECT Datum, Waarde, IIf([Waarde]<=20,"Lager","Hoger") AS test FROM Table1

Test 2:
Code:
SELECT Datum, Waarde, IIf([Waarde] Is Null,0,IIf(Sqr([Waarde])<=5,"Lager","Hoger")) AS test2 FROM Table1
 
Ik blijf toch denken aan een missing reference. Zelfs als er geen VBA gebruikt wordt kan deze foutmeldingen geven als ze bv. een bibliotheek van 64 bit verwacht en de geïnstalleerde versie 32 bit is. Zelfs als de bibliotheek niet gebruikt wordt, worden alle aangegeven bibliotheken één voor één opgeladen. Wanneer een bibliotheek niet gevonden wordt of de versie op jou computer is corrupt, dan stopt het proces en worden er geen verdere bibliotheken opgeladen. Dus als één van de volgende bibliotheken deze is die de gewone functies bevat zoals de IIf functie, dan heb je het vlaggen.
 
Laatst bewerkt:
NoellaG, ik zou ik de gedachte mee kunnen gaan maar waarom gaat het dan wel goed als ik een nieuwe database maak met een tabel en een query.

Ik heb de tabel en de Query uit de test database gekopieerd naar mijn database.
En de functie werkt zonder probleem!
Zo ziet de SQL string eruit in het SQL venster.

Code:
SELECT Table1.Datum, Table1.Waarde, IIf([Waarde]<=20,"Lager","Hoger") AS test
FROM Table1;


Iedereen bedankt voor de input.
 
Laatst bewerkt:
Test gedaan en het blijft in de Query de fout melding geven zelfs als ik het laat verwijzen naar een record dat uit een tabel komt en niet berekend wordt!

Een record in de query wordt berekend en dit gaat gewoon goed
Code:
TBalk: DateDiff("n",[MaxTijd],[TTijd])

Ik heb de Query eens helemaal uitgekleed en dan werkt de IIF functie wel. Maar eens gaan spitten in de Query.
 
Volgende test die je kan doen: maak eerst een query met de complexe berekening van sr en gebruik die als basis voor een nieuwe query met de IIF functie. Daarmee sluiten we uit dat de berekening te complex wordt.
 
Noellag, ik zou in de gedachte mee kunnen gaan maar waarom gaat het dan wel goed als ik een nieuwe database maak met een tabel en een query.
Niet dat ik wil pretenderen om ook maar aan de schoenen van noella te mogen ruiken, maar je hebt recht op een antwoord :). En dat is: áls het probleem met ontbrekende bibliotheken te maken heeft, dan heb je dat probleem niet in een nieuwe lege database, omdat je daar geen extra bibliotheken hebt geladen. Ergo: het probleem kán dan niet optreden.

Het wordt wellicht eens tijd om die mysterieuze ‘moeilijke’ berekening in je query (met tabelgegevens) te laten zien, want hoe denk je dat wij anders zinvol antwoorden kunnen bedenken?
 
Ik heb de database waarin ik dit probleem heb gestript van alle formulieren, rapporten, query's en tabellen.
Vervolgens heb ik de tabel en de query van de post #21 gekopieerd in deze database.
Als ik dan de query run werkt het allemaal zonder probleem.
Als ik nu in de query
Code:
test: IIf([Waarde]<=20,"Lager","Hoger")
copier naar een volgende kolom en hier
Code:
test2: IIf([Waarde]<=20,"Lager","Hoger")
van maak. Geeft deze tweede "IIf" nu de fout melding. De eerste "IIf" geeft geen fout. Ga ik op de originele "IIf" staan en doe ik CTRL+F2 om de code wat groter te kunnen bekijken en ik verander niets en sluit het venster krijg ik nu de foutmelding op deze eerste "IIF". Het
Code:
"Lager"
is wat er in zijn geheel wordt aangegeven.

Ik heb de database bijgesloten geen idee of jullie er iets meekunnen. PS. een functie als
Wiki:
Wortel:Sqr([Waarde])
geeft geen probleem.
 

Bijlagen

Robert,

Het is beter om de orginele base te plaatsen, want daar moet ergens een fout zitten of in de base is een harde fout geslopen die dit probleem veroorzaakt.

Gr. Cor
 
De originele database heeft allemaal linked tabelen naar een SQL server.
In het bijgesloten voorbeeld krijg ik de fout ook al dus ook zonder alle extra belast.

Begrijp me goed ik wil de originele database best aanleveren, de vraag is echter helpt dat wel?
 
Ik zal straks het nieuwe voorbeeld eens bekijken. Wat je beschrijft in #29 is ronduit bizar, en zou van zijn levensdagen niet mogen gebeuren.
 
Dat zit niet in een specifieke library; is standaard onderdeel van Access.

Net getest, en zoals verwacht: het werkt gewoon. Maar voor de gein: probeer deze dan ook eens.
Code:
test2: IIf([Waarde]>20;"Hoger";"Lager")

En ik heb 'm er nu zes keer ingezet, en ze doen het allemaal prima.
 
Als extra info als ik een andere database open waarde IIf functie in een kolom van een query's opgenomen werkt het. Als ik echter de functie met CTRL+F2 bekijk en weer sluit dan krijg ik ook de foutmelding.

Het is net als of Access de IIf functie wel doet als het al in de query is opgenomen, maar zodra het er aan toe wordt gevoegd er dan een check gebeurt die aangeeft, deze is niet goed.

Ik denk maar hardop
 
Nogmaals: dat zou niet moeten. En, ook nogmaals: als je exact hetzelfde doet in een nieuwe database, dan heb je het probleem niet (#25)? En in mijn versie gaat het ook goed?

Als het antwoord hierop ‘ja’ en ‘ja’ is, dan is, vermoed ik, toch je database corrupt. Gestript of niet, dat gaat je dan niet helpen. De enige (rigoreuze, dat wel) oplossing is dan: maak een nieuwe database, en kopieer daarin alle objecten uit de corrupte database.

Je gebruikt koppelingen naar een SQL server, dus die zou ik opnieuw koppelen. Queries kun je kopiëren. Test met enige regelmaat of het probleem wegblijft. De huidige test query lijkt mij een prima testobject. Als de query goed blijft werken, dan importeer je een paar formulieren, en test je de query weer. En zo ga je door tot alles geïmporteerd is. En dan maar hopen dat het probleem niet ‘meelift’. :).

Doet het dat wél, dan weet je ongeveer waar je het moet zoeken. Dus niet teveel objecten tegelijk importeren, anders weet je nog niks als het weer fout gaat.

Ik zie overigens wel dat jij de komma gebruikt als lijstschedingsteken. Als je daar geen moverende reden voor hebt, zou ik dat toch weer terug zetten naar de puntkomma. Maar wellicht gebruik je dan ook de punt als decimaal teken i.v.m. Amerikaanse landinstellingen?
 
En dat is een standaard onderdeel van de Office. Dus kun je gewoon weggooien :D.
Overigens is de site van Allen er één die ik van harte kan aanbevelen, al den ik dat hij niet erg actief meer is, want er verschijnt weinig nieuws meer.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan