Skip to main content

AccessTr.neT


Access Sorgusunda Alan Adı Değişkeni

Access Sorgusunda Alan Adı Değişkeni

#19
(30/06/2020, 20:43)kanakan52 yazdı:
(30/06/2020, 19:37)feraz yazdı: Filtre kodunu değiştirdim alttaki gibi.Hatanızdan birisi from Ajandam yerine from Database yazmışsınız.

Geçen ay olayı için nasıl olacak.Textboxa tarih girip o tarihen 1 ay öncesimiyoksa kodun çalıştığı tarihten 1 ay öncesimi.

Sub filtre()

Dim alan As String

Set baglan = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")
baglan.Open "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.Path & "\Database.accdb"

If ComboBox14.Value = "Baþlama Zamaný" Then
    alan = "BaslamaZamani"
ElseIf ComboBox14.Value = "Bitiþ Zamaný" Then
    alan = "BitisZamani"
ElseIf ComboBox14.Value = "Hatýrlatma Zamaný" Then
    alan = "HatirlatmaZamani"
End If

secim = TextBox11.Value
secim1 = TextBox10.Value
Me.ListView1.ListItems.Clear
If TextBox10.Value = "" Or TextBox11.Value = "" Then GoTo son
 
On Error GoTo son
Select Case ComboBox15.Value
    Case "Eþittir": rs.Open "select *  from Ajandam where fix(" & alan & ") like  " & Fix(CDbl(CDate(secim1))) & "", baglan, 1, 1
    Case "Arasýnda": rs.Open "select *  from Ajandam where fix(" & alan & ") between  " & Fix(CDbl(CDate(secim))) & " and " & Fix(CDbl(CDate(secim1))) & "", baglan, 1, 1
   
End Select

With ListView1
   
    If rs.RecordCount > 0 Then
        Do While Not rs.EOF
            .ListItems.Add , , rs(0).Value & ""
            For i = 1 To rs.Fields.Count - 1
                .ListItems(.ListItems.Count).ListSubItems.Add , , rs(i).Value & ""
            Next i
            rs.MoveNext
        Loop
    End If
End With
son:
Set rs = Nothing
Set con = Nothing
End Sub
@feraz Hocam merhaba, "önceki ay" secince bugünün tarihinden bir ay oncesi (mayis ayi) filtrelenecek hocam, bu ay secince haziran, gelecek ay secince temmuz ayindaki kayitlar gelmesi lazim, ayni mantikla, gecen yil (2019),bu yil (2020) gelecek yil (2021) olmasi lazim
Merhaba üstad.
Kodda Dateserial ile işlem yapılıyordu aynısını uygulayabilirsiniz.Deneyin olmazsa yarın bakarım.Comboboxtan geçen ay seçince fitrelenmeli bu durumda kriter textboxa gerek yok yani bunun için yani combobox koduna yazılacak.
Cevapla
#20
(30/06/2020, 20:49)feraz yazdı:
(30/06/2020, 20:43)kanakan52 yazdı:
(30/06/2020, 19:37)feraz yazdı: Filtre kodunu değiştirdim alttaki gibi.Hatanızdan birisi from Ajandam yerine from Database yazmışsınız.

Geçen ay olayı için nasıl olacak.Textboxa tarih girip o tarihen 1 ay öncesimiyoksa kodun çalıştığı tarihten 1 ay öncesimi.

Sub filtre()

Dim alan As String

Set baglan = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")
baglan.Open "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.Path & "\Database.accdb"

If ComboBox14.Value = "Baþlama Zamaný" Then
    alan = "BaslamaZamani"
ElseIf ComboBox14.Value = "Bitiþ Zamaný" Then
    alan = "BitisZamani"
ElseIf ComboBox14.Value = "Hatýrlatma Zamaný" Then
    alan = "HatirlatmaZamani"
End If

secim = TextBox11.Value
secim1 = TextBox10.Value
Me.ListView1.ListItems.Clear
If TextBox10.Value = "" Or TextBox11.Value = "" Then GoTo son
 
On Error GoTo son
Select Case ComboBox15.Value
    Case "Eþittir": rs.Open "select *  from Ajandam where fix(" & alan & ") like  " & Fix(CDbl(CDate(secim1))) & "", baglan, 1, 1
    Case "Arasýnda": rs.Open "select *  from Ajandam where fix(" & alan & ") between  " & Fix(CDbl(CDate(secim))) & " and " & Fix(CDbl(CDate(secim1))) & "", baglan, 1, 1
   
End Select

With ListView1
   
    If rs.RecordCount > 0 Then
        Do While Not rs.EOF
            .ListItems.Add , , rs(0).Value & ""
            For i = 1 To rs.Fields.Count - 1
                .ListItems(.ListItems.Count).ListSubItems.Add , , rs(i).Value & ""
            Next i
            rs.MoveNext
        Loop
    End If
End With
son:
Set rs = Nothing
Set con = Nothing
End Sub
@feraz Hocam merhaba, "önceki ay" secince bugünün tarihinden bir ay oncesi (mayis ayi) filtrelenecek hocam, bu ay secince haziran, gelecek ay secince temmuz ayindaki kayitlar gelmesi lazim, ayni mantikla, gecen yil (2019),bu yil (2020) gelecek yil (2021) olmasi lazim
Merhaba üstad.
Kodda Dateserial ile işlem yapılıyordu aynısını uygulayabilirsiniz.Deneyin olmazsa yarın bakarım.Comboboxtan geçen ay seçince fitrelenmeli bu durumda kriter textboxa gerek yok yani bunun için yani combobox koduna yazılacak.
Bakiyorum hocam simdi,
Cevapla
#21
Kodları deneyemedim mobilden yazdım.Bunları bir mesajbıx ile buldurun ay ve yıl için bir öncekini verecekmi.

Yıl için;

DateSerial(Year(Date) -1, Month(Date), Day(Date))

Ay için;

DateSerial(Year(Date), Month(Date) -1, Day(Date))
Cevapla
#22
Alttaki kodda ilgili tarihin son gününü buluyormuş.

DateSerial(Year(Date), Month(Date) + 1, 0)


Buda ilk günü buluyormuş.
Lazım olursa diye buldum kodları.Yani ayın ilk gününden son gününe kadar filtreleyebilirsiniz.Date yazan yerleri bir önceki bulunan tarihle vs.. değiştirebilirsiniz.
Kod:
DateSerial(Year(Date),Month(Date),1)
Cevapla
#23
Son verdiğim kodlardaki Date ye -1 eklenince belki önceki ayın ilk ve son günlerini bulur tarih olarak.
Cevapla
#24
(30/06/2020, 21:22)feraz yazdı: Son verdiğim kodlardaki Date ye -1 eklenince belki önceki ayın ilk ve son günlerini bulur tarih olarak.


hocam biraz kafa yorucam, seni daha fazla yormim içinden çıkabilirim diye ümit ediyorum. Olmazsa artık yine @feraz hocam diye haykırırım Img-grin
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task