Opgelost IIf in Quiries

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.
antwoord op bericht #36: als je ingesteld hebt om met komma's te werken als scheidingsteken, heb je misschien ook ingesteld om met enkele quotes ' te werken in plaats van dubbele quotes "?
 
Leg dan ook uit waarom het met één functie met dubbele quoots wél kan werken, en met twee functies niet :). Overigens kun je in Access dacht ik altijd wel met enkele én dubbele quoots werken. Al zijn dubbele quoots per definitie een stuk veiliger. En zou ik niet weten waar je dat kan instellen (of waarom je dat zou doen) :).
 
Het gaat erom om stuk voor stuk alle mogelijkheden te elimineren, zoals ik jàren geleden geleerd heb in de ingenieursopleiding.
Volgende test: bestaat het probleem alleen als de database gelinkt is met de database server, of ook als er alleen met Access tabellen gewerkt wordt?
 
Het gaat erom om stuk voor stuk alle mogelijkheden te elimineren
En dat proces heb ik in bericht #38 (geen idee waarom dit draadje zo lang door moet lopen overigens) al netjes beschreven. Begin met een schone, lege database en bouw hem voorzichtig weer op, ondertussen testend of het probleem weer opduikt. ‘Mogelijkheden’ aanpassen die niet aan te passen zijn, vallen volgens mij daar niet onder :).
 
Jullie allemaal bedankt voor de info, maar het lijkt toch complexer.
Als ik de database uit #21 open en hier de functie van OctaFish copier naar een volgende kolom en deze dan test2 noem, geeft het ook de foutmelding. Zolang ik de functie die in de database zie niet open of aanpas, werkt het als ik er wel aanzit door b.v. alleen "test" te vervangen door "testx" gaat het al fout.

Hierdoor heb ik het idee dat het eerder in mijn Access zelf zit dan in de database. Ik heb ook een test gedaan met een andere database en ook hier krijg ik dezelfde foutmelding.

Ik heb de IIFtest database nog eens opnieuw opgebouwd en krijg direct al de fout. Dit is denk ik ook de reden waarom bij #20 jullie de functie niet in de query zagen staan. Access slaat het niet op als er een fout wordt herkend. Toen ik deze database via #21 terugkreeg, werkte de functie wel, maar een kopie van deze functie in dezelfde query geeft de foutmelding.

Het idee van starten met een lege database gaat dan denk ik niet op omdat ik van het eerste moment het probleem al heb.
 
Dat is ook logisch, want het is geen bibliotheek. noella heeft een grote bak met kluitjes waar ze er af en toe één van in het forum gooit. Ik vermoed dat er dus inderdaad wat anders aan de hand is, en wellicht is het ook handiger om een Systeemherstel te doen op de Office. Access dus proberen te repareren, en als dat ook niet helpt, te verwijderen en opnieuw te installeren. Ook kan het handig zijn om op een andere computer/laptop te kijken of je het probleem daar ook hebt.
No way is dit een probleem met een (niet-geladen) bibliotheek.
 
de lib wordt ook aangegeven door Allen Brown. Deze zal wel opgeladen zijn, maar kan corrupt zijn.
 

Bijlagen

  • Access16ObjectLibrary.jpg
    Access16ObjectLibrary.jpg
    46,5 KB · Weergaven: 5
Ik heb hier een variant die bij mij in ieder geval goed werkt (Office 365).
En hij hoort in deze map te staan:
C:\Program Files\Microsoft Office\root\Office16
 

Bijlagen

Laatst bewerkt:
Ik heb een on-line reparatie laten uitvoeren.
Mijn MSACC.OLB file is nu van 19/08/2024.

Ik blijf de foutmelding houden.

Mijn bestanden staan in:
C:\Program Files (x86)\Microsoft Office\root\Office16

ik gebruik Office 365.

De versie uit #49 maakt geen verschil, hij is wel is 732 KB waarbij mijn versie 730 KB.
 
andere benadering om snel tot een oplossing te komen: als database gebruik je SQL server (zie post #32) . Laat het krachtigste deel van je applicatie de meest ingewikkelde berekening doen: maak een procedure of een view op SQL server die alle berekeningen bevat. Waar je in Access een IIF functie gebruikt kan je daar een case instructie gebruiken. Wel geen berekend veld als basis voor een nieuwe berekening in dezelfde select instructie gebruiken, want dit is een functie van de applicatie en maakt geen deel uit van de database SQL.
Je kan deze dataset dan linken naar je Access applicatie.
In de topic databases op dit forum bevat de eerste mail een basis handleiding T-SQL moest je dit nodig hebben.
 
NoellaG, Dank je, maar dit gebeurt eigenlijk al. Ik heb echter soms dat in een formulier er toch noch iets berekend moet worden, maar dat er geen data is om het te berekenen. Een veld laat dan in het formulier "error' zien. Ik probeer dit te onderdrukken met de "IIF" maar zonder succes.
 
Dus het gaat niet om de IIf in een query, maar op een formulier?
 
Zo te zien gebruik je de 32 bits versie van Office? Welke versie? Mijn voorbeeldje is bewerkt in de 64 bits versie, maar dat zou met de minimale objecten geen probleem mogen zijn.
 
Ik heb echter soms dat in een formulier er toch noch iets berekend moet worden, maar dat er geen data is om het te berekenen. Een veld laat dan in het formulier "error' zien. Ik probeer dit te onderdrukken met de "IIF" maar zonder succes.
Dit snap ik eerlijk gezegd niet helemaal. Heb je dan een niet-afhankelijk veld waarin de formule met de IIF staat? En de waarde waarmee je rekent komt óók ergens anders vandaan? Want als de data waarmee je rekent in de geg€vensbron staat, kun je de formule net zo goed in de query zetten. En volgens mij maakt het ook niet uit of je die berekening in een query maakt of op een formulier, al denkt novella dus van wel.

En waarom hebben we dan niet eerder van dit formulier gehoord en zit het niet in je voorbeeld? Zijn we dus al meer dan 50 berichten bezig over een vraag die nú pas duidelijk wordt gemaakt?
 
En volgens mij maakt het ook niet uit of je die berekening in een query maakt of op een formulier, al denkt novella dus van wel.
Volgens het laatste antwoord #52 wordt de berekening in een view/procedure op de database gemaakt (= SQL server). Dat maakt wél een groot verschil. Ik weet ook niet waarom er in de eerste berichten dan Access queries staan.
 
Alle, De View zorgt voor het aanleveren van de data van SQL naar Access. In Access worden er, er verder zaken berekend. Zo worden de statistieken van meerdere uren als een totaal gemaakt en worden voor verschillende onderdelen de eerste of juiste de laatste registratie genomen. Het IIf probleem kwam naar voren toen ik de Wortel uit een waarde wilde trekken en dit een probleem gaf. Zie begin van de draad. Het lijkt er dus dat zelfs in de meest eenvoudige vorm ook zonder data uit een SQL database de IIf functie in een Access Query bij mij niet wil werken en de fout geeft. Vergeet gewoon de rest, dit maakt het alleen maar onduidelijker.

Het klopt dat ik een 32 bits Access gebruik.

Het gekke is dat als ik de functie al in de Query zit deze gewoon werkt, maar als ik de functie open of copier dat deze dan een fout geeft.

Ter info ik heb ook even een test gedaan door een Formulier te maken met hier in de velden uit de Table1 van de IIFTest database. Vervolgens een extra Tekst veld aangemaakt en in dit tekstveld bij Control Source deze functie opgenomen
Code:
= IIF([Waarde]<20,0,100)
. en krijg wederom de foutmelding.
 
Dus even samenvatten: als de instructie al gecompileerd is, dan werkt deze. Als deze opniew gecompileerd moet worden, werkt deze niet. Heb je dat ook met bv. de Round functie?
Om uit te sluiten dat het iets met je instellingen te maken heeft, kan je even kijken naar de regio instellingen?
Op mijn computer:
1724147435329.png
 
NoellaG, ik denk dat jouw omschrijving klopt. De Round functie werkt gewoon geeft geen foutmelding.

Dit zijn mijn regio-instellingenScreenshot 2024-08-20 120322.jpg.
Ik zie dat het lijnscheidingsteken bij mij op komma staat. Ik kan deze in dit scherm niet aanpassen naar puntkomma.
 
Zo te zien zou het wél moeten, want de lijst is niet grijs. Maar het is inderdaad niet handig om hetzelfde teken als lijstscheiding te gebruiken, én als decimaal. Al zouden ze elkaar niet hoeven te bijten. Dat doen uiteraard Decimal symbol en Digit grouping symbol wél :). Kun je de landinstellingen wél op Nederland zetten? Dan krijg je, als het goed is, ook gelijk de juiste getalinstellingen.

Het IIf probleem kwam naar voren toen ik de Wortel uit een waarde wilde trekken en dit een probleem gaf.

En voor een wortel hoef je dus geen IIF te gebruiken, als er tenminste in alle velden een getal staat (of 0). Maar dat heb ik al eerder uitgelegd, en volgens mij heb je dat nog (steeds?) niet getest.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan