Resultaat SQL query overnemen in VBA

Status
Niet open voor verdere reacties.

dandiep

Gebruiker
Lid geworden
18 apr 2016
Berichten
27
Hallo,
Ik heb een tabel met daarin één kolom met datums, via een SQL statement in VBA wil ik graag de laatste (max) datum selecteren en overdragen aan een variabele.

Ik ben nog niet erg handig met VBA maar inmiddels kom ik redelijk weg met het "lenen" van codes, lang leve Google!

De gevonden code is hier te vinden:
http://www.techonthenet.com/access/modules/recordset.php

Mijn tabel.kolom heet tblTCImports.ImportDate

Omgebouwd naar mijn toepassing kom ik volgende uit:

Code:
Function GetGST() As String

   Dim db As Database
   Dim Lrs As DAO.Recordset
   Dim LSQL As String
   Dim LGST As Date

   'Open connection to current Access database
   Set db = CurrentDb()

   'Create SQL statement to retrieve value from GST table
   LSQL = "SELECT Max(tblTCImports.ImportDate) AS MaxOfImportDate FROM tblTCImports"
   Set Lrs = db.OpenRecordset(LSQL)

   'Retrieve value if data is found
   If Lrs.EOF = False Then
      'DEZE ONDERSTAANDE REGEL LOOP STUK, FOUTMELDING: Fout 3265 tijdens uitvoering: Kan het element niet vinden in de collectie.
      LGST = Lrs("ImportDate")
        
   Else
      LGST = "Not found"
   End If

   Lrs.Close
   Set Lrs = Nothing

   GetGST = LGST

End Function

Ik zit hier al een tijdje mee te stoeien, tijd voor een hulplijntje... wie o wie kan mij helpen?

Groeten,
Danny
 
Ik kan je zo vertellen wat je verkeerd doet, maar je kunt het makkelijk zelf zien, dus eerst een duwtje in de rug :).
Kijk eens naar de Veldnaam die je maakt en de Veldnaam die je aanroept...
 
Van een duwtje kun je leren....

Beste Octafish,

Bedankt voor het zoveelste duwtje in de rug....

De oplossing: LGST = Lrs("MaxOfImportDate")

Bedankt!
 
Overigens een mateloos ingewikkelde constructie voor iets dat je simpel met DMax kan oplossen :).
 
Beankt, nu is het toch wel een stuk minder complex :thumb:

Code:
Function GetTCData() As String

    Dim ImportDate As Date
   
    ImportDate = DMax("[ImportDate]", "tblTCImports")
    If ImportDate <> Date Then                                                               'TC Data is not loaded today
        Call LoadTCData                                                                      'Load TC Data
    End If
    
End Function
 
En zelfs dat kan korter :). Overigens vraag ik me af waarom je de functie een output geeft als je die niet vult.
Code:
Function GetTCData() 
    If DMax("[ImportDate]", "tblTCImports") <> Date Then LoadTCData
End Function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan