Onbegrijpelijke error bij calculated field in query

Status
Niet open voor verdere reacties.

MortovMolotov

Gebruiker
Lid geworden
10 jan 2018
Berichten
12
Dag iedereen,

Ik ben al een heel eind opgeschoten ivm. m'n database voor m'n collega die arts is, nl. bijhouden van getuigschriften voor verstrekte hulp; achtergrondinfo cfr o.a. deze topic van enkele maanden geleden.

Ik vat het hier nog eens samen, met oog op m'n volgende vraag (nog wat verder geplaatst):

In België betalen patiënten per prestatie (raadpleging); na die betaling krijgt de patiënt getuigschriftjes voor verstrekte hulp uit. Deze getuigschriften worden door de patiënten vervolgens opgestuurd naar hun ziekenfonds, waarna deze instantie een groot deel van het bedrag terugbetaalt. Soms stuurt de arts het getuigschrift rechtstreeks op naar het ziekenfonds, om zo uitbetaald te worden, zonder dat de patiënt zelf moet "voorschieten" (het zgn. "derde betalersysteem" -> van belang voor m'n vraag straks). Ik weet het, ongelooflijk middeleeuws voor Nederlanders, maar zo is het nu eenmaal.

Een beetje achtergrondinformatie m.b.t. mijn vragen hierbij is de volgende (cfr. dus ook de link hierboven).

Als arts moet je de volgende informatie altijd duidelijk opschrijven:
- de naam vd patiënt
- datum vd consultatie
- de zescijferige code(s) m.b.t. terugbetaling; dit is van belang voor de mutualiteit, omdat die dan weten hoeveel ze de patiënt moeten terugbetalen; bv. consultatie bij een huisarts: 101076, ca. 20 euro terugbetaald, afhankelijk van je statuut; bv. bij een reumatoloog: 102653, 44 euro terugbetaald, 53 euro indien je een speciaal statuut hebt.
- het bedrag
- de betaalwijze, nl. bancontact (pinpas in NL), cash, 3de betaler; onder dit veld zitten er nog twee


De artsen hebben dergelijke getuigschriften verzameld in "boekjes" van telkens 50 van die getuigschriften. Telkens als zo'n boekje vol is, moet je het samengeteld bedrag en de datum van het laatste getuigschrift erop zetten.


Voor het bijhouden van deze "boekjes" heb ik een access database geschreven; deze is, mede dankzij jullie hulp destijds, al zo goed als operationeel.


Mijn vraag is nu:

A. op het einde van een boekje dien ik twee verschillende bedragen te laten samentellen:
1. de som vd bedragen die door de patiënten rechtstreeks werden betaald (waarna ze in tweede tijd, via hun getuigschrift, een deel van het bedrag kunnen recupereren) = reguliere weg
2. de som vd bedragen die door de ziekenfondsen aan de arts werden betaald, door het feit dat hij/zij de getuigschriften rechtstreeks naar die instanties verstuurde = via derde betaler


B. Het lukt me niet langer om "compact & repair" op deze database uit te voeren; geen idee waarom; ben recent wel via 365 geüpgraded naar versie 2019 van Access, maar goed.


Hieronder volgen enkele gegevens m.b.t. de structuur van de database; een leeg bestand heb ik opgeladen via deze topic.
(mocht dit niet voldoende zijn, laat het me weten, dan kan ik eea hier aanvullen)

1. Design van Receipts tabel:
https://prnt.sc/hyeiex

2. DB Relationship
https://prnt.sc/hyeimo

3. Formulier om data in te geven
https://prnt.sc/hyej0z

4. SQL code van de query waarvan het rapport "AllReceipts" gebruik maakt, en waarin het calculated field vervat zit, waarmee ik probeer de bedragen, gemarkeerd als betaald via "3de betaler", apart te berekenen:
Code:
SELECT Books.Book, Receipts.Nr, Receipts.CDate, Receipts.Codes, Receipts.Amount, Receipts.PaymentMethod, Receipts.RDate, Receipts.Comments, IIf([PaymentMethod]=3,[Amount],"0") AS Via3rdPayer
FROM Books INNER JOIN Receipts ON Books.ID = Receipts.Book
ORDER BY Books.Book, Receipts.Nr;
--> in het calculated field "Via3rdPayer" komen er twee soorten bedragen: 0 euro indien betaald op andere wijze, dan wel het bedrag uit het veld "Amount" indien betaald via "3de betaler"; in een rapport zal ik beide later apart laten optellen.


Ondanks een syntax zoals gebruikelijk in de online hulppagina's van MS, krijg ik steevast de volgende foutmelding na afsluiten van de expression builder:
The expression you entered contains invalid syntax
You may have entered an operand without an operator


Als ik echter de query via SQL design open, en bovenstaande code er apart in plak, lukt het wel; maar o-wee als ik de zaak nadien via query design & expression builder open: meteen deze foutmelding, en onmogelijkheid tot opslaan vd wijzigingen.


Ik begrijp hier echt niks van, heel frustrerende errors,


mvg

Mortov Molotov

PS: een quasi leeg bestand, heb ik toegevoegd aan deze topic, bij wijze van test
--> Bekijk bijlage Boekjes - test (versie 20181104).zip
 
Bij mij doet het rapport het prima (A2010), en de functie Opbouwen gaat ook goed. Maar ik zet toch wel grote vraagtekens bij jouw formule: Via3rdPayer: IIf([PaymentMethod]=3;[Amount];"0"). Je maakt een berekening, waar dus getallen uitkomen. Waarom maak je een tekstveld van dat veld? Slaat in mijn optiek nergens op. Hou 'm gewoon als een getalveld: Via3rdPayer: IIf([PaymentMethod]=3;[Amount];0). Ik weet niet of dat jouw probleem oplost, maar het maakt je probleem in ieder geval niet groter :).
 
Bij mij doet het rapport het prima (A2010), en de functie Opbouwen gaat ook goed. Maar ik zet toch wel grote vraagtekens bij jouw formule: Via3rdPayer: IIf([PaymentMethod]=3;[Amount];"0"). Je maakt een berekening, waar dus getallen uitkomen. Waarom maak je een tekstveld van dat veld? Slaat in mijn optiek nergens op. Hou 'm gewoon als een getalveld: Via3rdPayer: IIf([PaymentMethod]=3;[Amount];0). Ik weet niet of dat jouw probleem oplost, maar het maakt je probleem in ieder geval niet groter :).

Dit zal idd een typo wezen. Ik probeer het hier nog eens straks.

Heb je overigens enig idee waarom dit foutmelding zich voordoet bij compact & repair?


Alvast bedankt!
 
Heb je overigens enig idee waarom dit foutmelding zich voordoet bij compact & repair?
Nee; net zo min als waarom ik snap dat je niet reageert met de knop <Reageer op bericht> maar met de QUOTE knop :). Nog één keer nodeloos quoten, en ik ga jouw complete eerste bericht consequent quoten in de antwoorden. Kijken of je dát leuk vindt :D.
 
Ik was ff aan 't reageren via m'n smartphone - kleine controls op die mobiele versie, en ik heb dikke vingers ;)

Enfin, heb het hele bestand eens uit m'n dropbox map verplaatst naar m'n desktop, en daar kon ik wel een compact & repair uitvoeren


Hoe dan ook: alles werkt nu
Wel blijven de "foutmeldingen", waarvan sprake hierboven, persisteren als ik de query opbouw via Query design & rechtermuisknop "Build..."
Maar als ik de onderstaande code gewoon zelf typ, lukt het wel.

Code:
SELECT Books.Book, Receipts.Nr, Receipts.CDate, Receipts.Codes, Receipts.Amount, Receipts.PaymentMethod, Receipts.RDate, Receipts.Comments, IIf([PaymentMethod]=3,[Amount],0) AS Via3rdPayer
FROM Books INNER JOIN Receipts ON Books.ID = Receipts.Book
ORDER BY Books.Book, Receipts.Nr;

Zullen we dan maar besluiten dat het om een bug in Access gaat?
 
Niet zo snel oordelen..... De fout ligt deze keer geheel bij jezelf :).
Code:
SELECT Books.Book, Receipts.Nr, [B][COLOR="#FF0000"][U]Receipts.CDate[/U][/COLOR][/B], Receipts.Codes, Receipts.Amount, Receipts.PaymentMethod, Receipts.RDate, Receipts.Comments, IIf([PaymentMethod]=3,[Amount],0) AS Via3rdPayer
FROM Books INNER JOIN Receipts ON Books.ID = Receipts.Book
ORDER BY Books.Book, Receipts.Nr;
Je gebruikt een gereserveerd woord (CDate) als veldnaam. Maar CDate is een functie in Access, en dat moet je dus nooit doen. Verzin een andere naam, en alles werkt perfect in de query builder.
 
sorry voor de late reactie; aanpassen van CDate naar een andere term heeft helaas niet tot het verhoopte resultaat geleid; de database is wel functioneel, maar de query kan ik niet via design modus aanpassen...
 
Zet nog eens een voorbeeldje met wat dummy data neer, dan kijk ik er wel even naar. Mag niet zo’n groot probleem zijn.
 
Ik weet niet of ik goed nieuws heb of slecht nieuws, maar ik kan je probleem niet reproduceren. Dus zowel de formule doet het prima (je had geen data in de query waarin de uitkomst kon worden getest trouwens) als de functie Opbouwen geeft geen probleem. Ik constateer wel dat jij geen aanhanger bent van mijn ontwerpprincipes :D.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan