If recordcount > 0 the datum checken

Status
Niet open voor verdere reacties.

JeroenMioch

Gebruiker
Lid geworden
1 dec 2007
Berichten
215
Beste programmeurs,

Ik zit met een probleempje.
Ik wil checken of een bepaald record bestaat en daarna een datumcheck uitvoeren.
Als de datum gelijk of groter is dan de systeemtijd, OF een lege reeks bevat dan moet een bepaald selectievakje true zijn, anders false.

Code:
Dim strSQL2 As String
strSQL2 = "SELECT DISTINCT Pnummer FROM tblMindervalide " _
    & "WHERE Pnummer = '" & Me.Pnummer & "'"
With CurrentDb.OpenRecordset(strSQL2)
    If .RecordCount > 0 Then

Hier wil ik een check plaatsen in het gevonden record :

Code:
If dlookup("Miva_tot", "tblMindervalide", "pnummer = '" & me.Pnummer & "') >= date OR isNull(Dlookup(("Miva_tot", "tblMindervalide", "pnummer = '" & me.Pnummer & "')) then

Dan moet dit het resultaat zijn :

Code:
        Me.slvKrpDeelnemer = True
        Else
        Me.slvKrpDeelnemer = False
    End If
End With

Bovenste en onderste stukjes code werken. Maar als ik het middelste stuklje code erin verwerk (op verschillende manier geprobeerd) dan word elk record "true".

Ik worstel hier al een flinke tijd mee, kan iemand me helpen ?
 
Waarom haal je [Miva_tot] niet gelijk op in je SQL? Je Dlookup doet zo te zien niks anders dan de query, dus hou het simpel...
 
Dus :

Code:
Dim strSQL2 As String
strSQL2 = "SELECT DISTINCT Pnummer, Miva_tot FROM tblMindervalide " _
    & "WHERE Pnummer = '" & Me.Pnummer & "' AND Miva_tot = "" or >= date"
With CurrentDb.OpenRecordset(strSQL2)
    If .RecordCount > 0 Then

heb het gevoel dat bovenstaande aircode niet gaat werken, maar zit ik wel in de goede richting uberhaupt ?
 
En waarom zou dit niet werken? Overigens maak je nu een ander criterium; ik zei alleen maar: veld erbij zetten ;)
Code:
Dim strSQL2 As String
strSQL2 = "SELECT DISTINCT Pnummer, Miva_tot FROM tblMindervalide WHERE Pnummer = '" & Me.Pnummer & "' 
With CurrentDb.OpenRecordset(strSQL2)
    If .RecordCount > 0 Then
In de rest van de code kun je nu de check doen op de datum.
 
Hoi Michel,

Ik heb hem nu zo staan :

Code:
Dim strSQL3 As String
strSQL3 = "SELECT DISTINCT Pnummer, miva_tot FROM tblMindervalide " _
    & "WHERE Pnummer = '" & Me.Pnummer & "'"
With CurrentDb.OpenRecordset(strSQL3)
 If DLookup("Miva_tot", "tblMindervalide", "pnummer = '" & Me.Pnummer & "'") >= Date Or IsNull(DLookup("Miva_tot", "tblMindervalide", "pnummer = '" & Me.Pnummer & "'")) Then
         Me.slvMIVA = True
        Else
        Me.slvMIVA = False
    End If
End With

Maar iedereen word nu aangemerkt als minder valide :P
 
Maar nu heb je die DLookup er weer bijgehaald; waarom? De hele grap is nu juist dat je de miva_tot nu ophaalt in de query...
 
Ok als ik deze code doe :

Code:
Dim strSQL2 As String
strSQL2 = "SELECT DISTINCT Pnummer, Miva_tot FROM tblMindervalide WHERE Pnummer = '" & Me.Pnummer & "' 
With CurrentDb.OpenRecordset(strSQL2)
    If .RecordCount > 0 Then

dan worden records die voorkomen in de tabel voorzien van een vinkje in het formulier.
Maar ook de records waarvan de Miva_tot datum lager dan de systeemdatum zijn.
Dus de verlopen vergunningen worden ook aangevinkt.
 
Ik zou bijna in de trein stappen en het zelf doen, want het is zo simpel :) Ik leg het nog één keer uit...
In eerste instantie deed je een selectie op een tabel op basis van Pnummer. Vervolgens ga je op basis van die recordset een DLookup doen met in beginsel dezelfde recordset, maar met een ander veld. Ik zeg dan: pak het veld gelijk mee, want je krijgt echt geen ander resultaat als je dezelfde filtering gebruikt.
Die DLookup gebruik je in een IF functie. Voilà: je hebt je gefilterde records, nu hoef je alleen de IF nog maar uit te voeren. En nee, dat hoeft niet meer met DLookup...
 
Helaas zijn we niet allemaal zo slim als jij Michel.
Dit is een hobby van mij die ik met veel plezier en voor 0 eurie doe om de werkprocessen bij mijn werkgever wat te automatiseren.
Hoewel je bedoelingen vast goed zijn maak je onbedoelt van mijn puzzel waar ik al weken geprobeerd heb het zelf op te lossen een nog grotere puzzel.
Een hapklaar antwoord geven daar leer ik niet van, maar echt helpen doe je me ook niet.

Waarschijnlijk doel je op
Code:
 if .recordcount > 0 and Miva_tot >= date then
maar dat werkt ook niet.
 
Mijn opmerking was niet bedoeld om mijzelf als overdreven slim te afficheren, of jou als iets anders (laat ik graag aan van Gaal over). Ik ging er vanuit dat je de twee codes wel zou kunnen combineren, en omdat je geen voorbeeldje hebt gepost, kan ik het uiteraard niet testen. Bovendien heb ik liever dat je de oplossing zelf vinddt ;) Maar ik denk dat dit zou moeten werken:
Code:
Dim strSQL2 As String
strSQL2 = "SELECT DISTINCT Pnummer, Miva_tot FROM tblMindervalide WHERE Pnummer = '" & Me.Pnummer & "' "
With CurrentDb.OpenRecordset(strSQL2)
    If .RecordCount > 0 Then
        If !Miva_tot >= Date Or IsNull(!Miva_tot) Then
            Me.slvKrpDeelnemer = True
        Else
            Me.slvKrpDeelnemer = False
        End If
    End If
End With
En dat is dus wat ik bedoelde: de DLookup heb je niet nodig, want in de query kun je het datumveld al opvragen. En dat test je dan vervolgens.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan