• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Tarih karşılaştırma problemi OLEDB

Katılım
8 Eylül 2008
Mesajlar
73
Excel Vers. ve Dili
2003 ing
Günaydın,

Sorun:
dim tarih
tarih = format(now,"dd.mm.yyyy")
Set KS = Bagm.Execute("Select count(*) From [Sheet1$] Where tarih > "" & tarih & """)

ile kapalı excel dosyasından veri karşılaştırması yaptığımda;

tarih hücreleri misal:
10.05.2011
11.05.2011

sadece 10 ile 11'i yani günleri karşılaştırmaya tabii tutarak karşılaştırmadaki şimdiki tarihinde sadece gününü alarak karşılaştırıyor.

Bu sorunun çözümünü bilen var mı :S

Şimdiden çok teşekkürler...

İyi Çalışmalar Dilerim.

Saygılarımla...
 
Günaydın,

Bu şekilde deneyin..

Kod:
Set KS = Bagm.Execute("Select count(*) From [Sheet1$] where tarih > " &  clng(cdate(tarih)))
 
Zeki Bey, yardımınız için teşekkürler ama malesef olmadı;

Sembolik Sabitlerden;
Kod:
Set KS = Bagm.Execute("Select count(*) From [Sheet1$] where tarih < CURRENT_DATE")
denediğimde _connection failed.

Sonra sql date deyimini
Kod:
Set KS = Bagm.Execute("Select count(*) From [Sheet1$] where tarih < DATE()")
denediğimde yine sadece günü alıyor.
 
Merhaba.
Ben Tarih sorgularını bu şekilde gönderiyorum. İşinizi görür umarım.

Kod:
Set KS = Bagm.Execute("Select count(*) From [Sheet1$] where  Tarih <" & CDbl(CDate(Tarih))
 
Sn Zeki Hocam'da Sn. @ASMET67 sizde aynı kodu veriyorsunuz ama bende işlemiyor :S

Kod:
tarih = Format$(Now, "dd.mm.yyyy")

    Set KS = New ADODB.Recordset: Set Bagm = New ADODB.Connection
    Bagm.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db_yolu & ";Extended Properties=""Excel 8.0;HDR=yes;IMEX=1"";"
    Set KS = Bagm.Execute("Select count(*) From [Sheet1$] where tarih <" & CDbl(CDate(tarih)))
 
Günaydın,
bence, bu tip sorunlarda ve aslında tüm projelerde; kodun belirli yerlerine breakpoint koyup, çalışma zamanında, örneğin tarih bilgisi veri tipini görmektir. Bu şekilde birçok sorunu rahatlıkla çözebiliriz.
 
Sn. Dentex,
Günaydın, zaten step to step gidiyorum. Function içerisinde lakin hücrelerdeki misal "14.05.2011" tarihin sadece 14 ü ile kıyaslama yapıyor. tarihsel formatta karşılaştırma yapamıyorum. Numeratic bir karşılaştırmada bulunuyor. Gelen verileri dizilere aktarmadan, sql koduyla yapmanın bir yolu yok mudur?

Hal bu ki, dizilere string olarak veriler alınıp cdate ile tarihsel formata dönüştürülebilir. Ancak bu bir kaçış noktası, programı yormamak adına bu konuyu soruyorum.

Zaten Sn. Hocalarımın CLng ile verileri çevirmeleri numeric bir formatta kıyaslamak için. Ancak sql den gelen format sadece ilk iki rakamı aldığı için her halukarda yine işe yaramıyor :S

Sn. Uzmanlar bir çıkış yolu var mıdır?
 
Merhaba,

Aşağıdaki gibi dener misiniz? Tüm kodları verseydiniz deneme şansım olabilirdi.

Kod:
Dim tarih As String
tarih = Format(Now, "yyyy-mm-dd")
Set KS = Bagm.Execute("Select count(*) From [Sheet1$] Where tarih > {ts '" & tarih & "'}")
 
selam
Set KS = Bagm.Execute("Select count(*) From [Sheet1$] Where tarih > "" & tarih & """)
yazımında >"" çift tırnaktan 2 kez yapmışsınız boyle olunca tarih gibi değil metin olarak karşılaştırır, bu satırın yerine aşağıdaki satırı yapıştırırmısınız (Düzeltme yapmayın üzerine yapıştırın)

Set KS = Bagm.Execute("Select count(*) From [Sheet1$] where CDbl(CDate(Tarih)) <" & CDbl(CDate(Tarih))

birde

tarih = format(now,"dd.mm.yyyy") geçiçi olarak kaldırıp
tarih=date()
deyip denermisiniz

Saygılarımla
 
Bir örnek oluşturup zipledim.
Örnek ektedir.

db.xls içinde

tarih
19.05.2011
09.05.2011
19.06.2011

3 tarih mevcut, program sonucuna göre 1 tarih çıkması lazım.

İlginiz için teşekkür ederim,

Saygılarımla.
 

Ekli dosyalar

denendi doğru olarak çalışıyor kodunuzu aşağıdaki şekilde değiştiriniz

Private Sub CommandButton1_Click()
On Error GoTo err
Dim KS, Bagm As Object
Dim Sorgu As String
Dim tarih As String
tarih = Date

Application.Visible = False
'db açık değil mi ?
Set KS = New ADODB.Recordset: Set Bagm = New ADODB.Connection
Bagm.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.xls;Extended Properties=""Excel 8.0;HDR=yes;IMEX=1"";" ' dosya yolu
Set KS = Bagm.Execute("Select count(*) From [Sayfa1$] where cdbl(cdate(tarih)) >" & CDbl(CDate(tarih)))



If Not KS.EOF Then
say = KS.GetString
say = Left(say, Len(say) - 1)
Else
say = "Kayit Yok"
End If
err:
If err Then MsgBox "Bir Problem Oluştu! " & vbNewLine & "Hata:" & err.Description & vbNewLine & "Sorgunuz:" & Sorgu
Bagm.Close
Set KS = Nothing: Set Bagm = Nothing
MsgBox say
Application.Visible = True

End Sub
 
Sn. @merakli_72 teşekkür ederim, dediğiniz şekilde çalışıyor.
 
Geri
Üst