Kod:
Private Sub cmdFiltre_Click()
On Error GoTo Err_cmdFiltre_Click
Dim TaliID As String
Dim TeklifVeren As Long
TaliID = Me.TaliIDSecim
TeklifVeren = Me.TeklifVerenSecim
Me.Filter = "TaliID = '" & TaliID & "'" And "TeklifVeren = " & TeklifVeren & ""
'Üst satırda veri türü uyuşmazlığı nerede? Acaba ayraçlarda mı bi hata yapıyorum. Ölçütler tek tek çalışıyor. Fakat ikisi birlikte veri türü uyuşmazlığına sebep oluyor.
Me.FilterOn = True
Exit_cmdFiltre_Click:
Exit Sub
Err_cmdFiltre_Click:
MsgBox Err.Description
Resume Exit_cmdFiltre_Click
End Sub
Açıklamalar kodun içinde. Yardımcı olabilirsenizi sevinirim.
Tırnaklarda hata gördüm.
Aşağıdaki şekilde deneyin.
Kod:
Me.Filter = "TaliID = '" & TaliID & "' And TeklifVeren = " & TeklifVeren
Bu tür durumlarda hem yazmayı hemde kontrol etmeyi kolaylaştırması için,
kriterleri ayrı ayrı değişkenlere ayarlamak kullanım kolaylığı sağlar.
Kod:
Dim Kriter1, Kriter2
Kriter1="TaliID = '" & TaliID & "'"
Kriter2="TeklifVeren = " & TeklifVeren
Me.Filter = Kriter1 & " And " & Kriter2
TeklifVeren değişkeni Long veri türüymüş, kodları düzelttim
Cevabınız için teşekkür ederim. Şimdi bende gördüm hatamı. Dediğiniz şekilde ayrı kriterlerle daha mantıklı olacak.
Kod:
Me.Filter = "TaliID = '" & TaliID & "' And TeklifVeren = " & TeklifVeren & ""
Peki şöyle bir durum var. Mesela buradaki kriterler daha fazla olacak. Böyle bir durumda kriterler için kullandığım denetimlerin bazıları boş kalabilir. Yani istediğim alanlara göre filtreleme yapacağım. Bu durumda formda kriter alanını boş bıraktığımda Null değeri olduğundan devam etmiyor. Bende onu şu şekilde yaptım.
Kod:
If Not IsNull(Me.TaliIDSecim) Then TaliID = Me.TaliIDSecim
If Not IsNull(Me.TeklifVerenSecim) Then TeklifVeren = Me.TeklifVerenSecim
Fakat alanlar null ise bu sefer o alanlardaki bütün kayıtların gelmesini istiyorum.
Mesela TaliID alanına göre filtre uygulayıp Teklif veren alanınıpas geçebilirim. Veya bunun tersi TeklifVeren alanına göre filtreleyip TaliID alanını pas geçebilirim. Veya her ikisine göre filtre yapabilirim. Sanırım filtre yapmayacağım alanlar için Like kullanacağım ama yapamadım. Biraz uzun oldu sanırım anlatmak istediğim
bu kodu dener misin?
dim filter as string
if me.TaliID<>"" then
filter="TaliID = '" & me.TaliID & "'"
end if
if me.TeklifVeren <>"" then
if filter<>"" then
filter=filter & "And TeklifVeren = " & me.TeklifVeren
else
filter="TeklifVeren = " & me.TeklifVeren
end if
end if
me.filter=filter