Bu kodlara göre > yada < ve rakam haricinde veri girilme yasağı koydum yaş için.
Arama kutusu boşsa tümünü listelemede oldu gif önceden eklendiği için orda çıkmıyor.
Private Sub txtAramaKutusu_Change()
Dim Aranan As String, xx As Byte, yy As Byte
Dim SqlAra, SqlKrt As String, parcaAl As String
Dim i As Integer, kelime As String, bul As Integer, bul2 As Integer, bul3 As Integer
SqlAra = " SELECT tblKayitlar.kayitNo, tblKayitlar.adiSoyadi, tblKayitlar.yasi, tblKayitlar.bilgi" & _
" FROM tblKayitlar"
Aranan = txtAramaKutusu.text
kelime = vbNullString
If cerArama = 1 Then
SqlKrt = " WHERE (((tblKayitlar.adiSoyadi) like '*" & Aranan & "*'))"
ElseIf cerArama = 2 Then 'Yas icin
If Aranan <> "" Or Not IsNull(Aranan) Then
For i = 1 To Len(Aranan)
If Mid(Aranan, i, 1) = ">" Or Mid(Aranan, i, 1) = "<" Or Mid(Aranan, i, 1) = "=" Then
kelime = kelime & Mid(Aranan, i, 1)
End If
Next
On Error GoTo son
Select Case kelime
Case ">", "<", "<=", ">="
SqlKrt = SqlAra & " WHERE tblKayitlar.yasi " & Aranan & ""
Case "><"
bul = InStr(1, Aranan, ">") + 1
bul2 = InStrRev(Aranan, "<")
xx = Mid(Aranan, bul, bul2 - bul)
yy = Mid(Aranan, bul2 + 1, Len(Aranan))
SqlKrt = SqlAra & " WHERE tblKayitlar.yasi > " & xx & " And tblKayitlar.yasi < " & yy & ""
Case ">=<="
bul = InStr(1, Aranan, "=") + 1
bul2 = InStrRev(Aranan, "<")
bul3 = InStrRev(Aranan, "=")
xx = Mid(Aranan, bul, bul2 - bul)
yy = Mid(Aranan, bul3 + 1, Len(Aranan))
SqlKrt = SqlAra & " WHERE tblKayitlar.yasi Between " & xx & " And " & yy & ""
Case Else
SqlKrt = SqlAra & " WHERE tblKayitlar.yasi" & "=" & Aranan & ""
End Select
End If
Else
SqlKrt = " WHERE (((tblKayitlar.bilgi) like '*" & Aranan & "*'))"
If Aranan = "Null" Then SqlKrt = " WHERE (((tblKayitlar.bilgi) is null))"
End If
If Len(Nz(Aranan, "")) = 0 Then SqlKrt = ""
If Aranan = "" Or IsNull(Aranan) Then GoTo enson
' SqlAra = SqlAra & SqlKrt & " ORDER BY tblKayitlar.adiSoyadi"
If cerArama = 1 Then
lstKayitListesi.RowSource = SqlAra & SqlKrt & " ORDER BY tblKayitlar.adiSoyadi"
ElseIf cerArama = 2 Then
lstKayitListesi.RowSource = SqlKrt & " ORDER BY tblKayitlar.adiSoyadi"
Else
lstKayitListesi.RowSource = SqlAra & SqlKrt & " ORDER BY tblKayitlar.adiSoyadi"
End If
Exit Sub
son:
lstKayitListesi.RowSource = vbNullString
Exit Sub
enson:
lstKayitListesi.RowSource = SqlAra & " ORDER BY tblKayitlar.adiSoyadi"
End Sub
Private Sub txtAramaKutusu_KeyPress(KeyAscii As Integer)
If cerArama = 2 Then
Select Case KeyAscii
Case 48 To 57, 8, 60, 61, 62 '8 silme 60 < ,62 >,61 =
Case Else
KeyAscii = 0
MsgBox "Sadece >,<,= ve rakamlar girilebilir...", vbCritical, "Hata"
End Select
End If
End Sub