Howto: MS Access – Invoer in memo veld beperken
Het is al weer even geleden dat ik de tijd heb kunnen vinden om een stukje op de site te zetten. Helaas zijn er soms echter dingen die nu eenmaal belangrijker zijn. Zoals bijvoorbeeld school en werk. Maar goed, ik ga het er vandaag toch maar weer eens op wagen. We zijn ondertussen al in 2010 beland, dus langs deze weg nog een heel mooi jaar gewenst aan alle bezoekers van Maikelsweblog (beetje laat maar ok). Verder zal ik niet afdwalen: Vandaag de site maar weer eens onder handen genomen en een upgrade uitgevoerd naar de inmiddels beschikbare versie 2.9.1 van Wordpress. Wat er in deze versie allemaal aangepast is, daar heb ik me nog niet echt in kunnen verdiepen, daar gaat deze post dus ook niet over.
In deze post wil ik wat VBA code beschrijven, die ik onlangs gebruikt heb om de invoer in een Access memo veld te controleren. Wellicht dat je niet meteen het nut van deze functionaliteit ziet. Maar standaard kent een memo veld in Access niet de mogelijkheid om de invoer van het aantal caracters te beperken. Wanneer je echter dus om wat voor reden dan ook in de problemen komt met invoer boven een x aantal caracters (omdat bijvoorbeeld de gebruikers interface van je Access applicatie dan vreemd gaat doen), kan de mogelijke invoer beperkt worden met een stukje VBA code.
In dit voorbeeldje beginnen we maar eens met het maken van een nieuwe tabel in een verder lege Access database. Voor het gemak van het voorbeeld maak ik even een database met slechts twee velden. Een van de velden is een type Memo:

De volgende stap is het maken van een formuliertje waarmee we gegevens in de database kunnen invoeren. Ik ga er even vanuit dat je weet hoe dit werkt, aangezien deze howto daar niet over gaat en dat wel erg basic is. Het resultaat ziet er in elk geval als volgt uit:

Mooi toch. In principe kunnen we nu informatie aan de tabel gaan toevoegen. We gaan nu echter even uit van de situatie dat we van de ingevoerde info straks via een rapport willen uitlijsten en dat hier geen ruimte is om meer als 34 caracters te tonen in het memo veld. Om te voorkomen dat gebruikers toch incidenteel meer als 34 caracters in het memo veld plaatsen, gaan we in het formulier dus wat functionaliteit toevoegen aan de eigenschappen van het veld memo. We vragen hiervoor in de ontwerp weergave van het formulier de eigenschappen op van het memo veld en we maken een nieuwe gebeurtenisprocedure voor de gebeurtenis ‘na bijwerken’ (after update):
Nu zetten we onderstaande VBA code in de gebeurtenis procedure. Deze code zorgt er voor dat er niet meer als 34 caracters ingebracht kunnen worden. Wanneer dit toch gebeurd krijgt de gebruiker een melding.
Private Sub Opmerking_AfterUpdate() 'Variabele declareren Dim strLenght As String Dim strMemo As String Dim strPrompt1 As String Dim strPrompt2 As String Dim strPrompt As String Dim strToMuch As String ' Inhoud gebruikers melding in string zetten strPrompt1 = "U heeft meer als 34 caracters ingegeven. De informatie zal niet volledig op het rapport verschijnen " strPrompt2 = "Pas de tekst desgewenst aan. Ter info, je hebt " strPrompt = strPrompt1 + strPrompt2 'Inhoud van de memo in een string stoppen. strMemo = Me.Opmerking.Value ' Lengte van de string strMemo bepalen 'Wanneer de lengte groter is als 34 posities, de gebruiker een melding geven om de tekst aan te passen. strLenght = Len(strMemo) strToMuch = strLenght - 34 If strLenght > 34 Then MsgBox strPrompt + strLenght + " caracters ingegeven. Dat zijn " + strToMuch + " te veel." End If End Sub
Ok dat dat is dus de code, maar laten we eens kijken of het werkt. Ik voer nu meer als 34 caracters in het memo veld in:
Na het bijwerken van het veld, verschijnt nu onderstaande melding.

Wanneer we nu de informatie in het veld aanpassen en zorgen dat we onder de 34 caracters blijven volgt erg geen melding. Op deze manier is de inhoud van een memo veld dus enigszins te beperken. De code die we hier gebruiken genereert een zachte melding. Dat wil zeggen: De gebruiker kan de waarschuwing indien gewenst negeren. Uiteraard is het ook mogelijk om de informtie in het veld gewoon af te kappen en alle invoer boven de 34 caracters weg te gooien. M.i. is dit echter geen gebruikers vriendelijke oplossing, daar de mutalist dan al zijn of haar invoer verliest. Gebruik de code rustig indien nodig. Aarzel ook niet om (al dan niet hieronder) verbeteringen of aanpassingen te droppen.


