Niquet.nl

Lijst bijwerken op basis van knop

Met een knop een listbox (formulier control) vullen met waarden op basis van een SQL query gefilterd op een waarde in een tekstveld elders in het formulier.

Datumveld genaamd “BetaalDatum”
Lijst control genaamd “lstCred”

Lijst moet gevuld worden met alle betaalde crediteuren op de datum ingevuld in veld ‘BetaalDatum’.

Hiervoor heb ik een private sub aangemaakt die ik aanroep zodra datum geselecteerd is met 

‘CALL Lijstupdate(datum)

 

 


Private Sub LijstUpdate(dat As Date)

Dim SQL As String
Dim BetaalDatum As String

Dim aant As Integer
Dim ctl As Control

DoCmd.Echo False

'Betaaldatum converteren naar tekst
BetaalDatum = Format(dat, "yyyy-mm-dd")

'Eerst checken of die dag überhaupt betalingen waren
aant = DCount("*", "_Betaalspecificatie_Betaalbaar", "[BetaalDatum] = #" & BetaalDatum & "#")

If aant > 0 Then

    SQL = "SELECT Betaaldatum, Crediteurnummer, Emailadres,   zoeknaam, naam, Aantal, Betaald " & _
    "FROM _Betaalspecificatie_Betaalbaar " & _
    "WHERE Betaaldatum = #" & BetaalDatum & "# " & _
    "ORDER BY zoeknaam;"

    Else
    
    SQL = "select distinct 'Geen' as CDCREDITEUR, 'Geen' AS ZOEKNAAM,  'Geen' AS 
    NAAM, 'Geen' as Email FROM _Betaalspecificatie_Betaalbaar"


End If


Me.lstCred.RowSource = SQL
Me.lstCred.Requery


DoCmd.Echo True

MsgBox "Lijst bijgewerkt."


De onderliggende query is zo opgebouwd dat als er geen e-mailadres bekend is, dat dan m’n eigen e-mailadres wordt getoond.

Met onderstaande code loop ik door alle crediteuren heen en selecteer alleen de crediteuren waarvan een e-mailadres bekend is.

Het e-mailadres staat in derde kolom van de lijst,en aangezien de lijst zero-based is, is index van het veld 2:

 


Private Sub knpSelecteerJuisteEmail_Click()

Dim lijst As ListBox
Set lijst = Me.lstCred
Dim itm As Object
Dim i As Integer
Dim msg As String

   For i = 0 To lijst.ListCount - 1
       If lijst.Column(2, i) = "eigen@emailadres.com" Then
            lijst.Selected(i) = False
       Else
           lijst.Selected(i) = True
       End If
   Next i

End Sub

Leave a Comment