Archief - ACCESS: Controle Functie

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

TiZon

Legacy Member
Hey,

Ik heb een funtie geschreven om te controleren of een veld niet leeg is.
Hij snapt het enkel niet als ik de bordercolor wil veranderen.


Code:
'Invoercontrole Klanten 
    Public Function InvoerControleKlant(Veld As Variant) As Variant 
        Dim Error As Boolean 
        If IsNull(Veld) Then 
            Veld.BorderColor = 255 
            Error = True 
        Else 
            Error = False 
        End If 
    End Function


Hoe los ik dit op?

Thx,
Bart

Raanº³

Legacy Member
de "255" slaat op? (moet ge btw geen RGB(x,x,x) gebruiken ofzo? In VB.NET moet ge color.(kleur) typen of fromargb()

TiZon

Legacy Member
Werkt indertussen, RGB moet ge niet gebruiken, dit is het geworden:

Code:
'Invoercontrole Klanten - On Lost Focus te gebruiken
    Public Function InvoerControleKlant(Veld As Access.TextBox) As Variant
    On Error Resume Next
        If IsNull(Veld) Then
            Veld.BorderColor = 255
        Else
            Veld.BorderColor = 0
        End If
    End Function

Maar, das enkel om de rand rood te krijgen

Code:
'Invoercontrole Klanten - Alle velden
    Public Function InvoerControleKlantAlleVelden(Veld1 As Access.TextBox, Veld2 As Access.TextBox, Veld3 As Access.TextBox, Veld4 As Access.TextBox, Veld5 As Access.TextBox) As Byte
    On Error Resume Next
        'Veld1
            If IsNull(Veld1) Then
                Veld1.BorderColor = 255
                Veld1.SetFocus
                InvoerControleKlantAlleVelden = 1
            End If
        'Veld2
            If IsNull(Veld2) Then
                Veld2.BorderColor = 255
                Veld2.SetFocus
                InvoerControleKlantAlleVelden = 1
            End If
        'Veld3
            If IsNull(Veld3) Then
                Veld3.BorderColor = 255
                Veld3.SetFocus
                InvoerControleKlantAlleVelden = 1
            End If
        'Veld4
            If IsNull(Veld4) Then
                Veld4.BorderColor = 255
                Veld4.SetFocus
                InvoerControleKlantAlleVelden = 1
            End If
        'Veld5
            If IsNull(Veld5) Then
                Veld5.BorderColor = 255
                Veld5.SetFocus
                InvoerControleKlantAlleVelden = 1
            End If
    End Function

Daarmee controleer ik dan 5 velden per keer ;)

Raanº³

Legacy Member
Mss een klein tipje: mijn leerkracht heeft mij altijd gezegd nooit het datatype Variant te gebruiken, aangezien dit immens veel geheugenruimte inneemt :) (opzoekingswerk levert mij 16 bytes per variant, string is afhankelijk van de hoeveeltijd tekst; maar aangezien je met veld (txtbox is uit de code af te leiden), kunde beter strings gebruiken?)

Mss nog een ander klein tipje (dat mij meteen opviel), nadat je een object aanspreekt (veldx), altijd een eigenschap aanhalen die je wilt veranderen (Veld1.text) Voor VBA is dit niet echt noodzakelijk, net zoals die "255" maar geloof me :) als je ooit met andere programmeer talen begint... ;)

en mss ook de conventie codes van Leszynski respecteren?

TiZon

Legacy Member
zal het wat aanpassen, naar de eerste 2 puntjes, maar wat (of wie?) is Leszynski ?

Raanº³

Legacy Member
TiZon zei:
zal het wat aanpassen, naar de eerste 2 puntjes, maar wat (of wie?) is Leszynski ?
dat is dat je de eerste 3 letters van het object of variabel erbij zet, geen underscore of spaties gebruikt + een relevante naam gebruikt.

Bijvoorbeeld bij een login formulier
lblUsername; lblPass (lbl = label) & txtUsername; txtPass (txt = textbox) & btnValideer (btn = Button)

In het code venster
dim strUsername as String
dim strPass as String

strUsername = txtUsername.text
strPass = txtPass.text

(het voordeel is vooral de leesbaar voor zowel jou als derden; het zijn internationale afspraken en dus voor een groot publiek toegankelijk. Als ze zien staat str weten ze meteen dat het een String is, lbl een label, txt een tekstbox etc etc). Het verhelpt ook zaken waarbij je vergeet te converteren (bvb van String naar een byte -> bvb als je er een controlegetal bijzet dat men moet intypen en als je met het controle getal werkt weet je meteen in welke datatype je dat opgeslagen had. Als je iets uit een tekstbox haalt is dat altijd alfanumeriek (=string). Bijvoorbeeld bij een controleformulier voor je bankrekening zijn de laatste 2 cijfers de restdeling (=MOD) van de overige getallen (aan elkaar) gedeeld door 97. Hierbij kun je dus met tekst niets doen (aangezien je met de getallen moet rekenen ;) -> de MOD kunde in datatype byte steken aangezien deze nooit groter kan zijn dan 99, et eerste getal gaat ge vermoedelijk in nen single/long moeten steken (ken de datatypes ni perfect van buiten))

Meer info: [ Link ]

TiZon

Legacy Member
zo werk ik normaal ook, juist mijn vakken hier niet, goed opgemerkt, ff aanpassen ;)

TiZon

Legacy Member
VB is toch plezant, veel simpeler dan al de rest imo :D

voor VB mogen ze mij altijd wakker maken ;)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan