van maximum waarde naar minimum waarde

Status
Niet open voor verdere reacties.

korsakow

Gebruiker
Lid geworden
6 feb 2013
Berichten
7
Onderstaande code heeft de maximum waarde weer van alle velden die beginnen met "toets" van hetzelfde record. Ik zou graag deze code omzetten naar een functie die de minimum waarde berekend ipv de maximum waarde. Lijkt me simpel voor iemand die er iets van kent.
Wie wil mij helpen?

Code:
Function MaxToets(Tabel As String, ID As Long) As Double
Dim sKey As String
Dim sVeld As String, strSQL As String
Dim i As Integer
Dim iMax As Double

With CurrentDb.OpenRecordset(Tabel)
    sKey = .Fields(0).Name
    .Close
End With

strSQL = "SELECT * FROM " & Tabel & " WHERE " & sKey & "=" & ID
With CurrentDb.OpenRecordset(strSQL)
    For i = 0 To .Fields.Count - 1
        If Left(.Fields(i).Name, 5) = "Toets" Then
            If .Fields(i).Value > iMax Then iMax = .Fields(i).Value
        End If
    Next i
    .Close
End With
MaxToets = iMax

End Function
 
Is een hele simpele aanpassing, die je denk ik zelf ook had kunnen zien als je kijkt wat er gebeurt.
Code:
Function MinToets(Tabel As String, ID As Long) As Double
Dim sKey As String
Dim sVeld As String, strSQL As String
Dim i As Integer
Dim iMin as Double

With CurrentDb.OpenRecordset(Tabel)
    sKey = .Fields(0).Name
    .Close
End With

strSQL = "SELECT * FROM " & Tabel & " WHERE " & sKey & "=" & ID
With CurrentDb.OpenRecordset(strSQL)
    For i = 0 To .Fields.Count - 1
        If Left(.Fields(i).Name, 5) = "Toets" Then
[B][COLOR="#0000FF"]            If .Fields(i).Value < iMin Then iMin = .Fields(i).Value
[/COLOR][/B]        End If
    Next i
    .Close
End With
MinToets = iMin

End Function
Probeer te snappen wat de functie doet, da's altijd beter dan alleen maar klakkeloos overnemen. Deze variant heeft maar 1 andere regel.
 
Klopt. Je moet eigenlijk nog een extra check doen omdat een variabele bij het declareren de waarde 0 krijgt. En dat is natuurlijk altijd de laagste waarde :).
Code:
            If .Fields(i).Value < iMin Or iMin = 0 Then iMin = .Fields(i).Value
 
Mag je de vraag op <Opgelost> zetten :)
 
er is toch nog steeds een probleem: vanaf een van de waarden '0' is, 'vergeet' hij de vorige velden en bekijkt de functie enkel de volgende velden.
 
Die snap ik niet. Wat bedoel je precies? De functie werkt getrapt naar beneden, dus hij past de waarde iMin maar in één richting aan. Wat logisch is, want dat wil je ook.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan