Dcount error #:3464

Status
Niet open voor verdere reacties.

snelledre

Gebruiker
Lid geworden
1 dec 2013
Berichten
40
Ik heb een probleem met een stukje code voor een druk knop die naar een bepaalde record toe moet gaan.
Het probleem ligt zoals ik weet bij de declaratie namelijk het ID is een long maar men verwacht een string.
Hoe kan ik de Long omzetten naar een string en deze invullen in de Dcount zodat deze werkt?

Code:
Private Sub Knop4_Click()

    On Error GoTo Err_Knop4
    
    Dim strInput As Long
    Dim recordCount As Integer
    Dim tryAgain As Integer
       
     Do
         strInput = InputBox("Welk storings ID wil je bewerken?")

        If Len(strInput) <> 0 Then
            recordCount = Nz(DCount("*", "dbo_Storing", "[ID] = '" & strInput & "'"), 0)

            If recordCount <> 0 Then
                tryAgain = vbNo
                DoCmd.OpenForm "dbo_Storing_Zoeken_Bewerken", , , "ID='" & strInput & "'"
            Else 
                tryAgain = MsgBox("Het storings ID '" & strInput & "' is niet gevonden. Probeer een ander ID?", vbYesNo)
            End If
        Else
            tryAgain = vbNo
        End If
    Loop Until tryAgain = vbNo

Exit_Knop4:

    Exit Sub

Err_Knop4:
    MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
    MsgBox Err.Description
    Resume Exit_Knop4
End Sub
 
Ik snap je niet helemaal: waarom een variabele als string omschrijven (strLong) en hem als Long definiëren? Heel erg verwarrend! En dan héb je er een getal in staan (het is namelijk geen string die je in strLong zet) en dan wil je hem filteren als string? Je ID in de tabel dbo_Storing is een getal, dan moet je ook filteren op een getal. Je wint er helemaal niks mee als je de hele boel eerst naar een string converteert; maakt je DLookup, die al niet de snelste functie van de wereld is, nog langzamer! Kortom, dit ziet er al een heel stuk beter (en netter; waarom al die lege regels?) uit:

Code:
Private Sub Knop4_Click()
Dim lngInput As Long, recordCount As Integer, tryAgain As Integer
On Error GoTo Err_Knop4
    Do
        lngInput = InputBox("Welk storingsID wil je bewerken?")
        If Len(lngInput) <> 0 Then
            recordCount = Nz(DCount("ID", "dbo_Storing", "[ID] = " & lngInput), 0)
            If recordCount <> 0 Then
                tryAgain = vbNo
                DoCmd.OpenForm "dbo_Storing_Zoeken_Bewerken", , , "ID=" & lngInput
            Else
                tryAgain = MsgBox("Het storings ID '" & lngInput & "' is niet gevonden. Probeer een ander ID?", vbYesNo)
            End If
        Else
            tryAgain = vbNo
        End If
    Loop Until tryAgain = vbNo
    Exit Sub

Err_Knop4:
    MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
    MsgBox Err.Description
End Sub
 
Octafish,

Kijk nu is het mij duidelijk ik had de bel en klepel maar wist niet hoe deze samen te voegen.
Het mij nu duidelijk hoe te werk te gaan met een getal.

Dank u het werkt perfect.

André
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan