in het dagelijkse leven ben ik arts, en reik ik dus ook die langwerpige getuigschriftjes voor verstrekte hulp uit.
Een beetje achtergrondinformatie m.b.t. mijn vragen hierbij is de volgende (cfr ook de link hierboven voor een pic).
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 WIGW statuut hebt.
- het bedrag: tegenwoordig moet dit er - m.i. terecht - duidelijk opstaan, FYI
Wij artsen hebben dergelijke getuigschriften verzameld in "boekjes" van telkens 50 van die getuigschriften. Telkens zo'n boekje vol is, moet je het samengeteld bedrag en de datum van het laatste getuigschrift erop zetten.
Voor het bijhouden van mijn "boekjes" heb ik een access database geschreven die operationeel is, mits je op de hoogte bent van de bugs in het systeem.
Ik kan dus alle data ingeven, en een rapport is beschikbaar om o.a. het samengeteld bedrag te berekenen.
Er zijn dus wel nog enkele bugs in 't systeem
1. in het formulier waar ik mijn data ingeef, heb ik via een combinatie van VBA code en field defaults al geregeld dat:
- bij het openen van een nieuw record (getuigschrift), de nummering automatisch +1 stijgt
- de datum en het "boekje", waarvan van het vorige getuigschrift (record) deel uitmaakte, automatisch worden overgenomen in het nieuwe record
- dit is logisch, gezien je 50 getuigschriften na elkaar van 't zelfde boekje invult, en bovendien hoef je de datum dus niet telkens opnieuw in te geven, hooguit enkele malen wat te wijzigen tijdens het ingeven van je gegevens (het is nl zo dat één boekje (van 50 getuigschriften) na twee, hooguit drie dagen volledig is opgebruikt; dit afhankelijk van het aantal patiënten je in die periode ziet
2. maar anderzijds had ik graag gewild dat na invullen van het vijftigste boekje
- hetzij alles gereset wordt voor het eerstvolgende record; alle velden leeg dus, want je begint aan een nieuw boekje
- hetzij er géén nieuwe record wordt aangemaakt, en meteen het rapport voor dat boekje wordt geopend; ergens logisch, gezien je dan moet beginnen samentellen
- en sowieso had ik op het formulier een knop gezet die het rapport voor het huidige boekje opent.
3. Ik slaag er maar niet in om een default value automatisch te laten selecteren voor het Codes field (= lookup list); bij voorkeur zou dat 102653 moeten zijn.
Hieronder volgen enkele gegevens m.b.t. de structuur van de database:
(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:
Code: Selecteer alles
SELECT Books.Book, Receipts.Nr, Receipts.CDate, Receipts.Codes, Receipts.Amount, Receipts.PaymentMethod, Receipts.RDate, Receipts.Comments
FROM Books INNER JOIN Receipts ON Books.ID = Receipts.Book
ORDER BY Books.Book, Receipts.Nr;
Code: Selecteer alles
Option Compare Database
Option Explicit
Private Sub Form_Current()
Dim RS As DAO.Recordset
On Error Resume Next
' Exit if not on the new record.
If Not NewRecord Then Exit Sub
' Goto the last record of the form recordset (to autofill form).
Set RS = RecordsetClone
RS.MoveLast
' Exit if you cannot move to the last record (no records).
If Err <> 0 Then Exit Sub
Painting = False
If NrTxt <= 50 Then
BookCombo = RS(BookCombo.ControlSource)
CDateTxt = RS(CDateTxt.ControlSource)
NrTxt = RS(NrTxt.ControlSource) + 1
Else
BookCombo = ""
CDateTxt = ""
End If
Painting = True
End Sub