09/12/2021, 22:38
Sayfalar: 1 2
10/12/2021, 00:01
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
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
yada aşağıdaki gibi bu durumda replace() ile değiştirmeye gerek kalmaz
ama bence kriter yapınızı değiştirmeniz daha uygun mesela ilgili alanlar boşsa where sorgusuna hiç eklenmemeli
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
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
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
(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
3. mesajdaki kodu denediniz mi? replace ile değiştirmeye gerek kalmıyor.
Sayfalar: 1 2