Leren vba in Access toe te passen, aanmaak formulieren en zoeken

jan-hendrik

Gebruiker
Lid geworden
23 jan 2024
Berichten
45
Ik heb eerst een opmerking, ik ben een beginner met access, zoek ondersteuning van iemand die daar tijd en aandacht voor heeft.
Dit zou ik fantastich vinden om mijn document gangbaar en toegankelijk te maken.
Wat is het geval, ik heb een oud bestand in één van de eerste access (1993), een mbd bestand naar Access 2019 geconverteerd,
weliswaar via excel exporteren en importeren.
Nu heb de tabellen over en werkend. QuerY's en rapporten lukt ook nog aardig, hier en daar wat bijslijpen. Dat komt goed.
Maar en daar gaan de vragen over, de formulieren uit het oude bestand nu weer nieuw leven inblazen, dat lukt me niet.
Vandaar deze vraag, wie kan mij helpen hierbij.

Het volgende is het geval: IK heb vijf tabellen, hierin wil ik kunnen zoeken in de leden, maar ook toevoegen.
Wie kan mij helpen vba en/of macro's hiervoor maken. Deze wil ik vervolgens impleteren en testen.
Mijn bestand staat in documenten en heet kadat2024.accdb. De tabel waar ik het eerst in wil zoeken genaamd Kadat.
De kolommen hierin zijn getiteld: PERSOONS_ID, VOORLETTERS, VOORNAMEN, ACHTERNAAM, VOLLEDIGE NAAM, GEB_DATUM, ....ETC

Laten voor mij eenvoudig beginnen met een werkend formulier, zoeken op ACHTERNAAM.

Ik hoor graag van jullie, super als dit mogelijk is
 
Ik snap eerlijk gezegd niet helemaal waarom je de conversie via Excel hebt gedaan; ik werk ook al jaren met Access (Windows 3.11 en Access 1.0 :)) dus ik heb genoeg ervaring met het ‘omzetten’ (tussen haakjes, want het is helemaal niet nodig) van oude versies naar nieuwe versies. Die werken namelijk gewoon door in de nieuwe versie. Dus leg eens uit waarom je voor deze weg hebt gekozen?
 
sorry, maar dat lukt echt niet, kan mijn versie nog ouder zijn?
Ik krijg deze niet geimporteerd in de nieuwe versie, met geen mogelijkheid....?
 
Nee, je versie kan beslist niet ouder zijn, want ik had de eerste :). Maar die wil ik dan eigenlijk wel zien!
 
Nog een paar kanttekeningen, want ik ging wel érg kort door de bocht...

Om te beginnen: in welke versie is je oorspronkelijke database gemaakt? Gezien het jaar vermoed ik iets als Access 2.0 of Access '95 of (max) Access '97. Daarvan is Access 2.0 nog uit het Windows 3.11 tijdperk, en ik weet eerlijk gezegd niet of die nog te importeren zijn. Maar die kun je dan ook eigenlijk nooit meer (goed) gedraaid hebben op een pc met Windows 95 of hoger. En zeker niet op de versies die we nu gebruiken, zoals Windows 10 en 11. Zelf heb ik nog een paar pakketten uit die tijd liggen (soms zelfs nog ingepakt :)) die ik dus echt niet kan installeren op mijn W10 computer. Zelfs niet met virtualisatie.

Dus daar zou het fout kunnen gaan. Maar je geeft aan dat je de tabellen hebt geëxporteerd naar Excel, en dat zal toch ook geen W3.11 versie zijn geweest? Dus dat mag je nog even uitleggen.
Als het dus een database is die je op een redelijk nieuwe Windows versie kan openen, dan is dát dus de juiste weg: de mdb gewoon openen in je nieuwe Access versie, en dan Opslaan als een accdb database. Dan blijft alles bewaard, en dus ook je formulieren.

Er kán een probleem ontstaan, als je veel hebt geprogrammeerd in die oude database: oudere versies zoals hierboven beschreven waren allemaal 32-bits, en het kan goed zijn dat je nieuwe versie 64 bits is. En dan heb je alsnog een probleem, omdat een aantal VBA procedures anders werken in 64 bits. Maar dat is prima op te lossen, door een kleine aanpassing in de code. Dus dat hoeft geen beletsel te zijn.

Daarnaast is importeren van Excel bestanden een nogal bruuske methode, omdat de Getaleigenschappen van numerieke velden nogal kolderiek wordt ingesteld in je nieuwe Access tabellen. En dat geldt ook voor Tekstvelden. Doorgaans kost het nogal wat tijd om de veldeigenschappen te 'fatsoeneren'. Maar in mijn ogen wél nodig.

Een alternatieve werkwijze kan nog zijn om een nieuwe database te maken (heb je inmiddels al gedaan, een nieuwe is wellicht beter) en daar de verschillende onderdelen uit je oude database, die je wilt hergebruiken, te importeren. Op die manier kan je precies aangeven wat je wél, en wat je níet uit de oude database over wilt halen.

En, als dat óók niet werkt, dan is er nog een derde methode: maak in (een kopie van) je oude database alles leeg, en gooi alles weg wat je niet nodig hebt. Exporteer eventueel de VBA code module(s) en kopieer alle SQL code van de gebruikte queries. Ik zet dan alles in een bestand in NotePad++, opgemaakt met SQL weergave, zodat ik de code goed kan lezen. Zet eventueel de naam van de query erboven, want die heb je later ook weer nodig.
Als de database leeg is, kun je kijken of je de lege kopie wél kan inlezen in je huidige versie. Als dat zo is, kun je alle data uit je Excel tabellen, of uit je reeds gemaakte database importeren in de tabellen. Die hebben dan de juiste structuur, en het inlezen van de data verandert daar niets aan.
Heb je, als het goed is, ook nog steeds je formulieren en rapporten.
Laatste stap is dan het aanmaken van de queries, waarvan je de naam en de SQL uit je NotePad++ bestand haalt. Oh ja: ook de VBA code importeren :).
 
Het werd geinstalleerd door middel van floppys. En het draaide op windows 95 een ieder geval. Ik hoop ooit die floppys omgezet naar een map en voor hem op een pc met een illegale versie xp niet verbonden op internet. Dat wil de persoon in kwestie niet. Het gaat om privacy gevoelige informatie van leden, waaronder ook vrijwillige bijdrages en andere informatie allemaal in zijn opgeslagen, banknr, geboortedata etc. Het is even moeilijk te achterhalen hou oud deze software is. Ik weet wel dat het installeren op de originele versie van Xp niet werkt, illegaal wel en inderdaad 32bits. We draaien nu al jaren er naast met pc's die op 64 bit draaien, zo ook deze waarop het nu staat. Weliswaar nog zonder formulieren. Het importeren wil ik nogmaals aangeven wil niet en krijg daarop alleen foutmeldingen.
Het lijkt mij dat ik in zoverre ik het kan beoordelen op deze wijze goed gehandeld heb. Wat je zegt een nieuwe maken, zou ook nog kunnen. Inmiddels heb ik mijn querys en rapporten al gemaakt.
Ik ben op deze locatie niet uitgerust met het oude systeem, vandaar ik formulieren probeer aan te maken in deze versie. Ik ga ondertussen ook kijken of het kan op dat oude systeem. Ik had daar al eens geprobeerd de vba's te exporteren. Dat lukte niet bij het importeren???
 
Om eindelijk maar eens op je vraag in te gaan: waarom denk je vba en macro's nodig hebben hebben om te kunnen zoeken? Met de ingebouwde zoekfunctie kom je al een heel eind, dus waarom moeilijk doen als het ook makkelijk kan?
 
Het is juist erg handig om het wel te kunnen, het werkt veel sneller. Als je op een achternaam bijvoorbeeld zoekt krijg je direct in een tabel eronder de weergave van de mensen met deze achternaam etc. Als je zoekt in een tabel, hobbel je van de ene naar de volgende, dan is het veel minder overzichtelijk, mijn bescheiden mening. Bovendien wordt er veel gebruik van gemaakt. En ik dacht dat het makkelijk was om dit aan te maken voor een kenner. En als ik er één heb kan ik misschien aan de hand van een werkend voorbeeld zelf de rest aanmaken
 
Als je de oude db onder handbereik hebt (het hoeft uiteraard niet via de oude XP Windows te lopen) dan zou je dus kunnen proberen om de formulieren te importeren. Zoals ik al schreef, kun je verschillende aspecten van een database apart importeren, waaronder dus ook aparte formulieren, die je in het tabblad <Formulieren> terugvind in het importstuk.
 
Het is juist erg handig om het wel te kunnen, het werkt veel sneller. Als je op een achternaam bijvoorbeeld zoekt krijg je direct in een tabel eronder de weergave van de mensen met deze achternaam etc. Als je zoekt in een tabel, hobbel je van de ene naar de volgende
Is niet waar; zoeken in een tabel is pertinent niet sneller dan zoeken in een formulier. En de zoektechniek werkt ook naadloos en 100% hetzelfde. Het enige dat mooier is in een formulier, is dat je veel makkelijker kunt filteren op een recordset/tabel. En dat doe ik, wat peter ook zegt, toch echt altijd vanuit VBA. En programmeren in/op een tabel is, voor zover het kan (je hebt tabelmacro's tegenwoordig) niet aan te bevelen.

Maar leg dus eerst uit wat je nu precies wilt, op wat voor formulier dat is (enkelvoudig, doorlopend?) en dan krijg je geheid beter antwoord. Ook van Peter :).
 
Ook voor filteren op een doorlopend formulier werkt de ingebouwde functie prima. Klik maar eens op de filterknop (terwijl je op de naam-kolom staat) en kies dan "Tekstfilters".
 
Soms moet Peter overtuigd worden van het voordeel van programmeren :). Als je het wilt programmeren, dan kan dat prima, dus laat je er vooral niet van weerhouden door mensen die het niet gebruiken.
En @peter: zullen we ons (voorlopig) richten op wat TS wil?
 
TS wil de functionaliteit van de oude database hebben. Dus daar help ik ‘m bij. Ik ken de db niet, en ik durf te wedden dat jij ‘m ook niet kent. Dus speculeren over wat TS wil, lijkt mij nogal overbodig.
 
Ho mannen, stop je energie in mijn bestand aub.(lol) IK heb ooit op de plaats waar het oude systeem draait foto's gemaakt van het scherm, om iets een idee te geven waar ik heen wil. Ik ga deze zoeken en plaatsen
 
Ik zou wel willen, maar ik heb je bestand niet :). Wellicht zou het schelen als je een kopietje hebt met dummy data? Sowieso hoop ik dat je niet in de productie database aan het werken bent, maar in een kopie daarvan. En tegenwoordig mag je dus geen kopie meer hebben van je ledendata. Vanwege de AVG. Dus je hebt sowieso een geanonimiseerde database nodig om te ontwikkelen en testen.
 
Aub, stop de energie in mijn bestand (lol) ik ga kijken of ik nog foto's heb van het scherm van het oude systeem om jullie een idee te geven
 

Bijlagen

  • Afbeelding van WhatsApp op 2024-01-24 om 15.47.54_4d8db213.jpg
    Afbeelding van WhatsApp op 2024-01-24 om 15.47.54_4d8db213.jpg
    206,5 KB · Weergaven: 22
  • Afbeelding van WhatsApp op 2024-01-24 om 15.47.54_55156c26.jpg
    Afbeelding van WhatsApp op 2024-01-24 om 15.47.54_55156c26.jpg
    217,3 KB · Weergaven: 17
  • Afbeelding van WhatsApp op 2024-01-24 om 15.47.51_5f962f3b.jpg
    Afbeelding van WhatsApp op 2024-01-24 om 15.47.51_5f962f3b.jpg
    214,2 KB · Weergaven: 17
  • Afbeelding van WhatsApp op 2024-01-24 om 15.47.51_2c9fd58a.jpg
    Afbeelding van WhatsApp op 2024-01-24 om 15.47.51_2c9fd58a.jpg
    214,3 KB · Weergaven: 14
  • Afbeelding van WhatsApp op 2024-01-24 om 15.47.51_ad94e769.jpg
    Afbeelding van WhatsApp op 2024-01-24 om 15.47.51_ad94e769.jpg
    160 KB · Weergaven: 17
  • Afbeelding van WhatsApp op 2024-01-24 om 15.47.51_b9fe6986.jpg
    Afbeelding van WhatsApp op 2024-01-24 om 15.47.51_b9fe6986.jpg
    309,3 KB · Weergaven: 17
  • Afbeelding van WhatsApp op 2024-01-24 om 15.47.45_09c8f40f.jpg
    Afbeelding van WhatsApp op 2024-01-24 om 15.47.45_09c8f40f.jpg
    189,8 KB · Weergaven: 21
Vandaar dat de gegevens niet online kunnen. Die blijven offline, uit de foto's begrijp je waarom. Ik doe dit vrijwillig voor een oude man, die nu uiteindelijk wil overstappen op het nieuwere access. Echter het vertrouwen heeft hij in mij, maar pc's, photoshop, word en excel zijn geen enkel probleem, maar access werk ik nooit mee. Nou dacht ik, doe ik wel even. Maar verlies zoveel tijd aan het uitzoeken met een ontevreden resultaat, vandaar mijn hulproep. En het zoeken op velden is niet eens het belangrijkste. Maar wou makkelijk starten en vandaar uit langzaam door, dat ik het ook begrijp. Maar het kan ook een brug te ver zijn. Wat bedoel je met enkelvoudig en meervoudig. Het aantal tabellen waar ik mee werk?
 
Nou, het formulier dat je laat zien is een Enkelvoudig formulier: er staat één record op. Daarop zie ik óók een subformulier met een doorlopend formulier met Betalingen, waar meerdere records te zien zijn. Kortom: je gebruikt ze allebei :). Overigens ben ik wél heel erg benieuwd naar de structuur van de database. Het zou fijn zijn als je een kopie van de (nieuwe) en kan maken zonder records, of (dat heb ik uiteraard liever) met een aantal dummy records. Dan kunnen we zien welke tabellen je hebt, hoe e.e.a. is gekoppeld en hoe de relaties liggen.

De reden dat ik dat vraag: ik zie dat je met Gezinnen werkt, en ik vermoed (jullie zouden niet de eerste zijn) dat de database dan verkeerd is ingericht.
De zoekformulieren die je nu gebruikt, zouden er allemaal uit kunnen: er zou namelijk geen onderscheid mogen/hoeven zijn tussen Personen en Gezinnen. Een gezin is tenslotte niets anders dan een verzameling personen die een familierelatie hebben en (eventueel)op hetzelfde adres wonen. Ik vermoed (of vrees eigenlijk :)) dat er nu een aparte tabel is voor gezinnen, waar die dus overbodig is.

Vandaar het verzoek om een kopietje!
 
Terug
Bovenaan Onderaan