Ophalen tekstwaarde uit een veld met datumcriterium

Status
Niet open voor verdere reacties.

john64

Gebruiker
Lid geworden
12 jun 2011
Berichten
268
Goedemiddag,

Ik heb een tabel waarin records staan met een datum staan en een tekstveld.
De datum is uniek in deze tabel.
D.m.v.
Code:
dateLaatsteDatum = DMax("[DatumCertificatie]", "[qryDatumCertificatie]")
krijg ik de waarde van de laatste datum uit de tabel. Dit gaat goed.
Nu wil ik ook de waarde van het bijbehorende tekstveld ophalen.
Dit heb ik geprobeerd met:
Code:
    txtType = DLookup("[TypeCertificatie]", "[qryDatumCertificatie]", "[DatumCertificatie] = " & CDate(CDbl(dateLaatsteDatum)))
maar dit heeft een fout 94 tot gevolg (ongeldig gebruik van Null).
In lokale variabelen scherm wordt dateLaatsteDatum weergegeven als #6-1-2012#. Moet ik in de criteriumbeschrijving iets met die # doen ?

Hoe kan ik een waarde uit een tabel halen met een datum als criterium ?

mvg
John
 
Laatst bewerkt:
Je kunt deze twee varianten eens proberen:

Code:
txtType = DLookup("[TypeCertificatie]", "[qryDatumCertificatie]", "[DatumCertificatie] = #" & CDate(CDbl(dateLaatsteDatum)) & "#")

Code:
txtType = DLookup("[TypeCertificatie]", "[qryDatumCertificatie]", "CDbl([DatumCertificatie]) = " & CDbl(dateLaatsteDatum))
 
Hoi Michel,

Optie 2 was de goede oplossing, ik krijg de juiste tekstwaarde terug.

Er zat alleen nog een ander probleem in. Bij het bepalen van de "laatste datum" werd gekeken naar de gehele tabel tblDatumCertificatie; hiervan werd de laatste datum bepaald. Dit is niet juist.
Ik moet de laatste datum van het betrokken certificaat hebben, dus er moet nog gefilterd worden op een aantal sleutelvelden.
Ik probeer er een functie van te maken, omdat het bepalen van de "laatste datum" op diverse formulieren gedaan moet worden.

Code:
Public Function dateLaatsteDatumCertificatie(lngPersoonID As Long, lngRichtingID As Long, lngOnderdeelID As Long) As Date    
    dateLaatsteDatumCertificatie = DMax("[DatumCertificatie]", "[tblDatumCertificatie]", _
        "[PersoonID] = lngPersoonID AND " _
        & "[RichtingID] = lngRichtingID AND [OnderdeelID] = lngOnderdeelID")

End Function

Ik krijg echter een fout bij uitvoeren van de functie: fout 2471 tijdens uitvoering:
De expressie die u als queryparameter hebt opgegeven, heeft de volgende fout veroorzaakt: lngPersoonID.

Hoe moet ik filteren uit een tabel ?

mvg
John
 
Probeer deze eens...

Code:
Public Function LaatsteDatumCertificatie(lngPersoonID As Long, lngRichtingID As Long, lngOnderdeelID As Long) As Date
Dim strSQL As String

    strSQL = "SELECT DISTINCT Top 1 DatumCertificatie FROM tblDatumCertificatie " & vbCrLf _
        & "WHERE [PersoonID]=" & lngPersoonID & vbCrLf _
        & "AND [RichtingID] = " & lngRichtingID & vbCrLf _
        & "AND [OnderdeelID] = " & lngOnderdeelID & vbCrLf _
        & "Order By DatumCertificatie DESC"
    
    With CurrentDb.OpenRecordset(strSQL)
        If .RecordCount = 1 Then
            LaatsteDatumCertificatie = .Fields(0).Value
        Else
            LaatsteDatumCertificatie = Date
        End If
        .Close
    End With

End Function
 
Hoi Michel,

Voor ik jouw oplossing zag, was ik nog even aan het "stoeien" geweest met VBA.
Ik kwam tot de volgende oplossing:

Code:
Public Function LaatsteDatumCertificatie(lngPersoonID As Long, lngRichtingID As Long, _
                    lngOnderdeelID As Long) As Date
    
    LaatsteDatumCertificatie = DMax("[DatumCertificatie]", "[tblDatumCertificatie]", _
        "[PersoonID] = " & lngPersoonrID & _
        " And [RichtingID] = " & lngRichtingID & _
        " And [OnderdeelID] = " & lngOnderdeelID )

End Function

Public Function TypeLaatsteDatumCertificatie(lngPersoonID As Long, lngRichtingID As Long, lngRichtingID As Long, dateDatumCertificatie As Date) As String
    
    TypeLaatsteDatumCertificatie = DLookup("[TypeCertificatie]", "[qryDatumCertificatie]", _
        "[PersoonID] = " & lngPersoonID & _
        " And [RichtingID] = " & lngRichtingID & _
        " And [RichtingID] = " & lngRichtingID & _
        " And Cdbl([DatumCertificatie]) = " & CDbl(dateDatumCertificatie))

End Function

Ik zag dat de variabelen die meegegeven worden aan de functie buiten de aanhalingstekens gezet moesten worden, en nu werkt het.

Weer bedankt voor het in de goede richting sturen ... :)

mvg
John
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan