combinatie van codes

Status
Niet open voor verdere reacties.

Noel Prove

Gebruiker
Lid geworden
16 jul 2006
Berichten
98
Hallo,

In een form maak ik gebruik van 5 comboboxen en een comandoknop om gegevens te filteren.

Als er in geen enkele combobox zoekcriteria is ingevuld wordt er een msgbox weergegeven.

Zover werkt alles prima.

Nu wil ik eigenlijk hetzelfde toepassen als er geen gegevens worden gevonden die voldoen aan

de zoekcriteria. Ik probeer dus deze 2 zaken te combineren maar het lukt me niet. Als er geen zoekcriteria

is ingevuld krijg ik ook steeds de msgbox dat er geen data is (wat logisch is trouwens). Is er een

manier om dit toch van elkaar te kunnen onderscheiden ?

De code die ik gebruik in geval van geen zoekcriteria :

Code:
Private Sub btnFilter_Click()
    
    Dim strWhere As String                  'The criteria string.
    Dim lngLen As Long                      'Length of the criteria string to append to.
    
    If Not IsNull(Me.cboCategorie) Then
        strWhere = strWhere & "([CategorieID] = " & Me.cboCategorie & ") AND "
    End If
    
    If Not IsNull(Me.cboGemeente) Then
        strWhere = strWhere & "([GemeenteID] = " & Me.cboGemeente & ") AND "
    End If
    
    If Not IsNull(Me.cboGeslacht) Then
        strWhere = strWhere & "([Geslacht] = """ & Me.cboGeslacht & """) AND "
    End If
    
    If Not IsNull(Me.cboMaand) Then
        strWhere = strWhere & "(Month([Geboortedatum]) = " & Me.cboMaand & ") AND "
    End If

    If Not IsNull(Me.cboBeginletter) Then
        strWhere = strWhere & "([Volledige naam] like """ & Me.cboBeginletter & "*"") AND "
    End If
    
    lngLen = Len(strWhere) - 5
    If lngLen <= 0 Then
        MsgBox "Geen criteria ingevuld !", vbInformation, "Nothing to do."
    Else
        strWhere = Left$(strWhere, lngLen)
        Me.Filter = strWhere
        Me.FilterOn = True
    End If
End Sub

En de code die ik zou gebruiken om te checken of er gegevens zijn die
voldoen aan de zoek criteria :

Code:
Dim rs As Object
Set rs = Me.Recordset.Clone
If Me.Recordset.RecordCount = 0 Then 'checks for number of records
MsgBox "Geen data voor deze criteria !", vbOKOnly + vbExclamation, "No data"
End If
End Sub

Iemand een idee hoe ik dit zou kunnen doen ?
Ik heb al verscheidene combinaties geprobeerd maar kom er niet uit.
Alvast bedankt.
 
Ik weet natuurlijk niet wat je al uitgeprobeerd heb. Het lijkt me alsof het volgende sowieso niet klopt
Code:
[COLOR=#333333]If Me.Recordset.RecordCount = 0 Then[/COLOR]
Moet dat niet zijn
Code:
[COLOR=#333333]If rs.RecordCount = 0 Then[/COLOR]
 
Waarom je tekst toevoegt aan een variabele die je misschien niet eens nodig hebt, is mij altijd een raadsel. Vind ik slecht programmeren. Net zo min als waarom je geen Recordset declareert, maar een Object. Ik zou het dus zo doen:
Code:
Private Sub btnFilter_Click()Dim strWhere As String 
Dim rs As DAO.Recordset

    If Not IsNull(Me.cboCategorie) Then
        strWhere = strWhere & "[CategorieID] = " & Me.cboCategorie
    End If
    If Not IsNull(Me.cboGemeente) Then
        strWhere = strWhere & IIf(strWhere <> "", " AND ", "") & "[GemeenteID] = " & Me.cboGemeente.Value
    End If
    If Not IsNull(Me.cboGeslacht) Then
        strWhere = strWhere & IIf(strWhere <> "", " AND ", "") & "[Geslacht] = """ & Me.cboGeslacht & """"
    End If
    If Not IsNull(Me.cboMaand) Then
        strWhere = strWhere & IIf(strWhere <> "", " AND ", "") & " Month([Geboortedatum]) = " & Me.cboMaand
    End If
    If Not IsNull(Me.cboBeginletter) Then
        strWhere = strWhere & IIf(strWhere <> "", " AND ", "") & [Volledige naam] Like """ & Me.cboBeginletter & ""*"""
    End If
    If strWhere <> "" Then
        MsgBox "Geen criteria ingevuld !", vbInformation, "Nothing to do."
        Exit Sub
    Else
        Me.Filter = strWhere
        Me.FilterOn = True
    End If
    Set rs = Me.Recordset.Clone
    If rs.RecordCount = 0 Then 'checks for number of records
        MsgBox "Geen data voor deze criteria !", vbOKOnly + vbExclamation, "No data"
    End If


End Sub
 
Hallo, bedankt voor de mailtjes.

Ik heb de code uitgeprobeerd maar ik krijg nu steeds de msgbox "geen criteria" nietemin ik
de zoekcriteria heb ingevuld.
Er moet dus nog ergens een foutje inzitten.

Groetjes.
 
Als je alles uit het hoofd doet, zie je wel eens wat over het hoofd; er zit een klein foutje in de code. Had je overigens zelf ook kunnen ontdekken :).
Code:
Private Sub btnFilter_Click()Dim strWhere As String 
Dim rs As DAO.Recordset

    If Not IsNull(Me.cboCategorie) Then
        strWhere = strWhere & "[CategorieID] = " & Me.cboCategorie
    End If
    If Not IsNull(Me.cboGemeente) Then
        strWhere = strWhere & IIf(strWhere <> "", " AND ", "") & "[GemeenteID] = " & Me.cboGemeente.Value
    End If
    If Not IsNull(Me.cboGeslacht) Then
        strWhere = strWhere & IIf(strWhere <> "", " AND ", "") & "[Geslacht] = """ & Me.cboGeslacht & """"
    End If
    If Not IsNull(Me.cboMaand) Then
        strWhere = strWhere & IIf(strWhere <> "", " AND ", "") & " Month([Geboortedatum]) = " & Me.cboMaand
    End If
    If Not IsNull(Me.cboBeginletter) Then
        strWhere = strWhere & IIf(strWhere <> "", " AND ", "") & [Volledige naam] Like """ & Me.cboBeginletter & ""*"""
    End If
    If strWhere = "" Then
        MsgBox "Geen criteria ingevuld !", vbInformation, "Nothing to do."
        Exit Sub
    Else
        Me.Filter = strWhere
        Me.FilterOn = True
    End If
    Set rs = Me.Recordset.Clone
    If rs.RecordCount = 0 Then 'checks for number of records
        MsgBox "Geen data voor deze criteria !", vbOKOnly + vbExclamation, "No data"
    End If

End Sub
 
Hallo,

Bedankt voor het mailtje. De code werkt prima.

Bedankt voor de moeite en de goede support !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan