Büyüktür Küçüktür İşaretlerine Göre Filtrelemeyi Yapabilme

1 2
09/12/2021, 22:38

husem

merhaba sayın üstadlarım,
büyüktür küçüktür işaretlerine göre filtrelemeyi yapamadım,
yardımcı olabilirmisiniz?

[img]
[/img]
10/12/2021, 00:01

berduş

ben sadece ilksecim için yaptım diğeri için benzer şekilde siz de yapabilirsiniz
ilksecim = Replace(ilksecim, ",", ".") satırını eklemelisiniz Vba maalesef , "virgül"olan ifadeyi sayısal olarak görmüyor . "nokta " ile değişmeli
ayrıca siz sorguda = "eşittir" kullanmışsınız ona gerek yok eşittir/büyük küçük işaretleri zaten ilksecim içinde var
ayrıca sayısal ifadelerde ' "tek tırnak" kullanılmaz
Private Sub FILTRELE()


ilksecim = Nz(Me.ARALIK1 & Me.DEGER1)
ilksecim = Replace(ilksecim, ",", ".")
ikincisecim = Nz(Me.ARALIK2 & Me.DEGER2)


If IsNull(Me.ARAMUSTERI) Then MUS = "[RECETE_FIYATLARI].MUSTERI" Else MUS = "'" & Me.ARAMUSTERI & "'"
If IsNull(Me.ARARENKNO) Then RNO = "[RECETE_FIYATLARI].RENK_NO" Else RNO = "'" & Me.ARARENKNO & "'"
If IsNull(Me.ARARENK) Then RNK = "[RECETE_FIYATLARI].RENK" Else RNK = "'" & Me.ARARENK & "'"
If IsNull(Me.ARAPARABIRIMI) Then PBIRIM = "[RECETE_FIYATLARI].PARA_BIRIMI" Else PBIRIM = "'" & Me.ARAPARABIRIMI & "'"


sql = "SELECT RECETE_FIYATLARI.ID, RECETE_FIYATLARI.KAYIT_TARIHI AS KayıtTarihi, RECETE_FIYATLARI.MUSTERI AS Müşteri, RECETE_FIYATLARI.RENK_NO AS [Renk No], RECETE_FIYATLARI.RENK, RECETE_FIYATLARI.RENK_FIYATI AS RenkFiyatı, RECETE_FIYATLARI.PARA_BIRIMI AS Birimi From RECETE_FIYATLARI"
xxx = " WHERE (RECETE_FIYATLARI.MUSTERI=" & MUS & ") AND (RECETE_FIYATLARI.RENK_NO=" & RNO & ") AND (RECETE_FIYATLARI.RENK=" & RNK & ") AND (RECETE_FIYATLARI.PARA_BIRIMI=" & PBIRIM & ") AND (RECETE_FIYATLARI.RENK_FIYATI " & ilksecim & ")"
Debug.Print Sql & xxx
Me.Liste15.RowSource = Sql & xxx

Me.Liste15.Requery

End Sub
10/12/2021, 00:21

berduş

yada aşağıdaki gibi bu durumda replace() ile değiştirmeye gerek kalmaz
Private Sub FILTRELE()

If IsNull(Me.ARAMUSTERI) Then MUS = "[RECETE_FIYATLARI].MUSTERI" Else MUS = "'" & Me.ARAMUSTERI & "'"
If IsNull(Me.ARARENKNO) Then RNO = "[RECETE_FIYATLARI].RENK_NO" Else RNO = "'" & Me.ARARENKNO & "'"
If IsNull(Me.ARARENK) Then RNK = "[RECETE_FIYATLARI].RENK" Else RNK = "'" & Me.ARARENK & "'"
If IsNull(Me.ARAPARABIRIMI) Then PBIRIM = "[RECETE_FIYATLARI].PARA_BIRIMI" Else PBIRIM = "'" & Me.ARAPARABIRIMI & "'"

sql = "SELECT RECETE_FIYATLARI.ID, RECETE_FIYATLARI.KAYIT_TARIHI AS KayıtTarihi, RECETE_FIYATLARI.MUSTERI AS Müşteri, RECETE_FIYATLARI.RENK_NO AS [Renk No], RECETE_FIYATLARI.RENK, RECETE_FIYATLARI.RENK_FIYATI AS RenkFiyatı, RECETE_FIYATLARI.PARA_BIRIMI AS Birimi From RECETE_FIYATLARI"
xxx = " WHERE (RECETE_FIYATLARI.MUSTERI=" & MUS & ") AND (RECETE_FIYATLARI.RENK_NO=" & RNO & ") AND (RECETE_FIYATLARI.RENK=" & RNK & ") AND (RECETE_FIYATLARI.PARA_BIRIMI=" & PBIRIM & ") AND (RECETE_FIYATLARI.RENK_FIYATI" & Me.ARALIK1 & Format(Nz(Me.DEGER1, 0), "0,00") & ");"

Me.Liste15.RowSource = Sql & xxx

Me.Liste15.Requery

End Sub

ama bence kriter yapınızı değiştirmeniz daha uygun mesela ilgili alanlar boşsa where sorgusuna hiç eklenmemeli
10/12/2021, 00:28

berduş

If IsNull(Me.ARAMUSTERI) Then MUS = "[RECETE_FIYATLARI].MUSTERI" Else MUS = "'" & Me.ARAMUSTERI & "'" yerine
If IsNull(Me.ARAMUSTERI) Then MUS = "" Else MUS = " and [RECETE_FIYATLARI].MUSTERI='" & Me.ARAMUSTERI & "'" gibi bir yöntem daha uygun olur
bu durumda
xxx = " WHERE (RECETE_FIYATLARI.MUSTERI=" & MUS & ") AND (RECETE_FIYATLARI.RENK_NO=" & RNO & ") AND (RECETE_FIYATLARI.RENK=" & RNK & ") AND (RECETE_FIYATLARI.PARA_BIRIMI=" & PBIRIM & ") AND (RECETE_FIYATLARI.RENK_FIYATI" & Me.ARALIK1 & Format(Nz(Me.DEGER1, 0), "0,00") & ") kodu yerine

xxx = mus & RNO ......
if len(xxx & "")>0 then xxx=" where " & mid(xxx,4) gibi kullanılabilir
10/12/2021, 00:32

husem

(10/12/2021, 00:28)berduş yazdı: If IsNull(Me.ARAMUSTERI) Then MUS = "[RECETE_FIYATLARI].MUSTERI" Else MUS = "'" & Me.ARAMUSTERI & "'" yerine
If IsNull(Me.ARAMUSTERI) Then MUS = "" Else MUS = " and [RECETE_FIYATLARI].MUSTERI='" & Me.ARAMUSTERI & "'" gibi bir yöntem daha uygun olur
bu durumda
xxx = " WHERE (RECETE_FIYATLARI.MUSTERI=" & MUS & ") AND (RECETE_FIYATLARI.RENK_NO=" & RNO & ") AND (RECETE_FIYATLARI.RENK=" & RNK & ") AND (RECETE_FIYATLARI.PARA_BIRIMI=" & PBIRIM & ") AND (RECETE_FIYATLARI.RENK_FIYATI" & Me.ARALIK1 & Format(Nz(Me.DEGER1, 0), "0,00") & ") kodu yerine

xxx = mus & RNO ......
if len(xxx & "")>0 then xxx=" where " & mid(xxx,4) gibi kullanılabilir

sn üstad, bu haliyle çözüldü, belirttiğim aralıkta filtreleme yapıyor,

ilksecim = Nz(Me.ARALIK1 & Me.DEGER1)
ilksecim = Replace(ilksecim, ",", ".")
ikincisecim = Nz(Me.ARALIK2 & Me.DEGER2)
ikincisecim = Replace(ikincisecim, ",", ".")


If IsNull(Me.ARAMUSTERI) Then MUS = "[RECETE_FIYATLARI].MUSTERI" Else MUS = "'" & Me.ARAMUSTERI & "'"
If IsNull(Me.ARARENKNO) Then RNO = "[RECETE_FIYATLARI].RENK_NO" Else RNO = "'" & Me.ARARENKNO & "'"
If IsNull(Me.ARARENK) Then RNK = "[RECETE_FIYATLARI].RENK" Else RNK = "'" & Me.ARARENK & "'"
If IsNull(Me.ARAPARABIRIMI) Then PBIRIM = "[RECETE_FIYATLARI].PARA_BIRIMI" Else PBIRIM = "'" & Me.ARAPARABIRIMI & "'"


sql = "SELECT RECETE_FIYATLARI.ID, RECETE_FIYATLARI.KAYIT_TARIHI AS KayıtTarihi, RECETE_FIYATLARI.MUSTERI AS Müşteri, RECETE_FIYATLARI.RENK_NO AS [Renk No], RECETE_FIYATLARI.RENK, RECETE_FIYATLARI.RENK_FIYATI AS RenkFiyatı, RECETE_FIYATLARI.PARA_BIRIMI AS Birimi From RECETE_FIYATLARI"
xxx = " WHERE (RECETE_FIYATLARI.MUSTERI=" & MUS & ") AND (RECETE_FIYATLARI.RENK_NO=" & RNO & ") AND (RECETE_FIYATLARI.RENK=" & RNK & ") AND (RECETE_FIYATLARI.PARA_BIRIMI=" & PBIRIM & ") AND (RECETE_FIYATLARI.RENK_FIYATI " & ilksecim & ") AND (RECETE_FIYATLARI.RENK_FIYATI " & ikincisecim & ")"
Debug.Print Sql & xxx
Me.Liste15.RowSource = Sql & xxx

Me.Liste15.Requery
10/12/2021, 00:36

berduş

3. mesajdaki kodu denediniz mi? replace ile değiştirmeye gerek kalmıyor.
1 2