Veri Türü Uyuşmazlığı

12/11/2009, 10:22

siberonik

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.
12/11/2009, 10:25

Seruz

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
12/11/2009, 10:31

siberonik

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
14/11/2009, 13:48

Nurullah_Serdar

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