[SORGU] Tarih Aralığı Sql
#1
access-sql-18 
Merhaba hocalarım,

Aşağıda Ek'te belirttiğim örnek projede yapmak istediğim şey;

seçtiğim personelin belirttiğim tarihler arası giriş ve çıkışlarını excel formatında çıktı yapmasını istiyorum. Çok saçma şekilde çalışıyor nerede hata yaptım algılayamıyorum.  Mm

Tarihleri yazıyorum fakat belirttiğim o tarih aralığı olmuyor. Tablo biçimi tarih olarak yapılı VBA da dd.mm.yyyy olara formatladım tam isabet tarih yazarsam kayıt geliyor. ama 1 aylık aralık yapınca ya kayıtlar gelmiyor yada alakasız kayıt geliyor.

yapmış olduğum SQL;
Visual Basic
  1. strSQL = "SELECT * FROM [giris-cikis] WHERE [AdSoyad]='" & bt & "' AND [tarih] >= #" & itarih & "# AND [tarih] <= #" & starih & "#"


birde şunu denedim;

Visual Basic
  1. strSQL = "SELECT * FROM [giris-cikis] WHERE [AdSoyad]='" & bt & "' AND [tarih] BETWEEN #" & itarih & "# AND #" & starih & "#"




Eklenti Dosyaları
.rar   BeyTor.rar (Boyut: 27,18 KB / İndirilme: 48)



  Alıntı
Bu mesajı beğenenler:
#2
SELECT ....... #" & Format(itarih;"mm\/dd\/yyyy") & "# şeklinde koşul oluşturun.



  Alıntı
Bu mesajı beğenenler:
#3
(05-10-2023, 02:59)dsezgin demiş ki: SELECT ....... #" & Format(itarih;"mm\/dd\/yyyy") & "# şeklinde koşul oluşturun.

hocam şu şekilde yaptım;

Visual Basic
  1. strSQL = "SELECT * FROM [giris-cikis] WHERE [AdSoyad]='" & bt & "' AND [tarih] >= #" & Format(itarih, "dd/mm/yyyy") & "# AND [tarih] <= #" & Format(starih, "dd/mm/yyyy") & "#"



fakat run time error 3075 'sorgu ifadesi içindeki Tarihte sözdizimi hatası' diyor.



  Alıntı
Bu mesajı beğenenler:
#4
Visual Basic
  1. strSQL = "SELECT * FROM [giris-cikis] WHERE [AdSoyad]='" & bt & "' AND [tarih] >= #" & Format(itarih, "dd\/mm\/yyyy") & "# AND [tarih] <= #" & Format(starih, "dd\/mm\/yyyy") & "#"



bu şekilde düzelttim fakat istediğim tarihler arasında verileri excel çıktı yapamıyor. sanki sadece güne göre sıralama yapıyor. Ay ve yılı dikkate almıyor. mesela 25.09.2023 - 30.09.2023 yapınca o tarihler geliyor ama 01.09.2023 - 30.10.2023 yapınca gelmiyor.

Aşağıda kodun tamamı vardır.
Visual Basic
  1. Sub excel()
  2.    Dim appExcel As Object
  3.    Dim wb As Object
  4.    Dim ws As Object
  5.    Dim strSQL As String
  6.    Dim rs As Object
  7.    Dim i As Integer
  8.    Dim bt As String
  9.    
  10.    ' Tarih bilgilerini metin kutularından alın
  11.    Dim itarih As Date
  12.    Dim starih As Date
  13.    
  14.    On Error Resume Next
  15.    bt = Me.ara.Value
  16.    On Error GoTo 0
  17.    
  18.    If bt = "" Then
  19.        MsgBox "Personel Seçiniz.", vbExclamation, "BeyTor"
  20.        Exit Sub
  21.    End If
  22.    
  23.    ' Tarih koşullarını metin kutularından alın
  24.    itarih = CDate(Me.basla.Value)
  25.    starih = CDate(Me.bitir.Value)
  26.    
  27.    ' Excel uygulamasını başlatın
  28.    Set appExcel = CreateObject("Excel.Application")
  29.  
  30.    ' Yeni bir Excel çalışma kitabı oluşturun
  31.    Set wb = appExcel.Workbooks.Add
  32.  
  33.    ' Veritabanındaki kayıtları sorgulayın
  34. strSQL = "SELECT * FROM [giris-cikis] WHERE [AdSoyad]='" & bt & "' AND [tarih] >= #" & Format(itarih, "dd\/mm\/yyyy") & "# AND [tarih] <= #" & Format(starih, "dd\/mm\/yyyy") & "#"
  35.    Set rs = CurrentDb.OpenRecordset(strSQL)
  36.  
  37.    ' Excel çalışma kitabındaki ilk sayfayı seçin
  38.    Set ws = wb.Sheets(1)
  39.  
  40.    ' Excel sayfasına başlık satırını ekleyin
  41.    For i = 0 To rs.Fields.Count - 1
  42.        ws.Cells(1, i + 1).Value = rs.Fields(i).Name
  43.    Next i
  44.  
  45.    ' Verileri Excel sayfasına kopyalayın
  46.    ws.Range("A2").CopyFromRecordset rs
  47.  
  48.    ' Excel uygulamasını gösterin
  49.    appExcel.Visible = True
  50.  
  51.    ' Kaynakları serbest bırakın
  52.    Set rs = Nothing
  53.    Set ws = Nothing
  54.    Set wb = Nothing
  55.    Set appExcel = Nothing
  56. End Sub





  Alıntı
Bu mesajı beğenenler:
#5
(05-10-2023, 04:19)BeyTor demiş ki: bt = Me.ara.Value
   
strSQL = "SELECT * FROM [giris-cikis] WHERE [AdSoyad]='" & bt & "' AND [tarih] >= #" & Format(itarih, "dd\/mm\/yyyy") & "# AND [tarih] <= #" & Format(starih, "dd\/mm\/yyyy") & "#"

Visual Basic
  1.  bt = Me.Personel.Value



SQL
  1. strSQL = "SELECT * FROM [giris-cikis] WHERE [AdSoyad] " & IIf(bt = "0", "Is Not Null", "='" & bt & "'") & " AND [tarih] Between #" & Format(itarih, "mm\/dd\/yyyy") & "# AND #" & Format(starih, "mm\/dd\/yyyy") & "#"



Prosedürdeki satırlarını güncelleyin.



  Alıntı
Bu mesajı beğenenler:
#6
Yok hocam olmadı. bt.ara.value yi bt.personel.column(1) diye yaptım. çünkü bu bir birleşik kutu ve tablodan veri çekiyor.

fakat yine belirttiğim tarih aralığı excel çıkartamıyor. tamamını çıktı yapıyor.

sanırım kurguyu ifade edemedim.  Wacko



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Yaş Aralığı Satir 3 335 24-04-2025, 19:14
Son Mesaj: halily
  Tabloda çakışan Tarih Aralığı Engelleme adnnfrm 2 370 08-07-2022, 02:48
Son Mesaj: adnnfrm
  Tarih Aralığı Seçme sedatisen 5 551 26-10-2021, 14:13
Son Mesaj: dsezgin
  Tarih Aralığı Sorgu kemal karadoğan 2 878 02-07-2021, 14:04
Son Mesaj: ekremer1969
  [FONKSiYON] Mevcut Tarih Verileri Baz Alınarak +iş Günü Ilavesi Ile Ileri Süreli Tarih Bulmak. osmanorman 10 2.029 03-03-2021, 12:38
Son Mesaj: dsezgin
  [FORM] Tarih Seçici / Tarih Formatı h2001 5 1.544 15-01-2020, 22:55
Son Mesaj: dsezgin
access-sql-9 [SORGU] iki tarih arası gün tarih bulma m45m45 94 15.030 12-01-2019, 23:13
Son Mesaj: m45m45
  [VBA] VBA'da iki tarih aralığı belirterek tablodan kayıt silmek devilspath 2 1.101 16-10-2018, 19:02
Son Mesaj: devilspath

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi