Hallo,
Ich habe eine Suche nach vier Kriterien (Matrikelnummer, Name, Vorname, Ort), die im Formular eingegeben werden können und will die Ergebnisse im selben Formular in einem Listenfeld erscheinen lassen. Nach meinem Code tun sie das aber nicht. Woran liegt es? Die Trefferzahl wird angezeigt. Hier mein Code:
Private Sub Datensatz_suchen_Click()
Dim Krit(1 To 4) As String
Dim SQL As String
Dim Anz As Byte, i As Long, treffer As Long 'Anz zählt mit, wieviele Bedingungen es gibt
Dim ergebnis As Control
'bis zu vier Suchfelder als Kriterien merken
If Not IsNull(Me!Matrikelnummer) Then
Anz = Anz + 1
Krit(Anz) = „MNr LIKE '“ & Me!Matrikelnummer & „%’“
End If
If Not IsNull(Me!Name) Then
Anz = Anz + 1
Krit(Anz) = „strApplicantName LIKE '“ & Me!Name & „%’“
End If
If Not IsNull(Me!Vorname) Then
Anz = Anz + 1
Krit(Anz) = „strApplicantVorname LIKE '“ & Me!Vorname & „%’“
End If
If Not IsNull(Me!Ort) Then
Anz = Anz + 1
Krit(Anz) = „strApplicantOrt LIKE '“ & Me!Ort & „%’“
End If
Select Case Anz
Case 0 'es sind keine Kriterien erfaßt
MsgBox „Sie haben keine Suchkriterien erfasst!“, vbExclamation, „Eingabefehler“
Me!Matrikelnummer.SetFocus
Exit Sub
Case 1 'es ist ein Kriterium erfaßt
SQL = SQL & "WHERE " & Krit(1)
Case Else 'es gibt mehr als ein Kriterium
SQL = SQL & "WHERE " & Krit(1)
For i = 2 To Anz
SQL = SQL & " AND " & Krit(i)
Next
End Select
treffer = GetTreffer(SQL)
Set ergebnis = Me!lstSuchergebnis
Select Case treffer
Case 0
MsgBox „Leider keine Treffer.“, vbInformation, „Antragsuche“
Me!txtTreffer = treffer
ergebnis.RowSource = „“
Case Is > 100
MsgBox „Es können maximal 100 Treffer ausgegeben werden, Ihre Kriterien würden“ & _
„aber " & treffer & " Treffer ergeben.“ & vbCrLf & vbCrLf & „Geben Sie genauere“ & _
" Kriterien ein!", vbExclamation, „Antragsuche“
Me!txtTreffer = 0
ergebnis.RowSource = „“
Case Else
SQL = „SELECT MNr as Matrikelnummer, strApplicantName as Nachname,“ & _
" strApplicantVorname as Vorname, lngClaimAntrag_fuer as Semester," & _
„strClaimBearbeiterkürzel as Aktenzeichen FROM qry_frm_antrag“ & SQL & _
SQL = SQL & „ORDER BY strApplicantName“
ergebnis.RowSource = SQL
Me!txtTreffer = treffer
End Select
End Sub
'Trefferanzahl prüfen
Public Function GetTreffer(ByVal Krit As String) As Long
Dim SQL As String
Dim dbcon As ADODB.Connection
Dim rs As ADODB.Recordset
SQL = "SELECT Count(*) as treffer from qry_frm_Antrag "
SQL = SQL & Krit
Set dbcon = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open SQL, dbcon
GetTreffer = rs!treffer
rs.Close
Set dbcon = Nothing
End Function