Modülde Sorgu İçinde Tarih Değişkeni Hatası

1 2
08/09/2009, 10:46

siberonik

Merhaba arkadaşlar, ufak bir sorunum var yardımcı olabilirseniz sevinirim.
Modül içerisinde kayıtseti olarak kullanmak üzere şöyle bir sorgu var. yalnız bu sorgunun WHERE bölümündeki HaftaBasi ve HaftaSonu tarih değişkenlerinde aşağıda eklemiş olduğumu hata mesajını vermektedir. Yüksek oranda sorgu içerisinde tarihler için kullandığım değişkenlerde ayraç hatası var. Fakat ne kadar uğraştımsa tarihler için olan bu ayraç meselesini çözemedim.

Not : Affınıza sığınarak veritabanı örneği istemezseniz sevinirim çünkü gönderemem.

Kod:
Dim DTB As DAO.Database
Dim RST1, RST2, RST3, RST4 As DAO.Recordset
Dim STR1, STR4 As String
Dim HaftaBasi, HaftaSonu As Date
Dim Sirket As String
Dim AcenteID As String

...

STR4 = "SELECT Policeler.PoliceSirket, Policeler.AcenteID, Acente_AcenteBilgileri.Unvani, Policeler.PoliceTur, Policeler.PoliceTanzimTarihi, Policeler.PoliceBaslamaTarihi, Policeler.PoliceBitisTarihi, Policeler.PoliceNetPrim, Policeler.PoliceBrutPrim " _
& "FROM Policeler INNER JOIN Acente_AcenteBilgileri ON Policeler.AcenteID = Acente_AcenteBilgileri.AcenteID " _
& "WHERE (((Policeler.PoliceSirket)='" & Sirket & "') AND ((Policeler.AcenteID)='" & AcenteID & "') AND ((Policeler.PoliceTanzimTarihi)>=" & HaftaBasi & "  And (Policeler.PoliceTanzimTarihi)<=" & HaftaSonu & " ))"
...

End Sub


08/09/2009, 11:39

Nurullah_Serdar

"WHERE (((Policeler.PoliceSirket)='" & Sirket & "') AND ((Policeler.AcenteID)='" & AcenteID & "') AND ((Policeler.PoliceTanzimTarihi)>=" & HaftaBasi & " And (Policeler.PoliceTanzimTarihi)<=" & HaftaSonu & " ))"
ölçüt olarak tarih kullanılmasında sıkça rastlanan bir durum bu. öncelikle bilgisayarınızın tarih ayracını . değilde / olarak ayarlayın denetim masasından. sonrasında ölçük olarak belirttiğiniz tarihlerin başına ve sonuna # işareti koyun.
AND ((Policeler.PoliceTanzimTarihi)>=#" & HaftaBasi & "# And .... bunun gibi.
08/09/2009, 12:06

cuneyt

şu şekilde aynen yapıştırırmısın.


STR4 = "SELECT Policeler.PoliceSirket, Policeler.AcenteID, Acente_AcenteBilgileri.Unvani, Policeler.PoliceTur, Policeler.PoliceTanzimTarihi, Policeler.PoliceBaslamaTarihi, Policeler.PoliceBitisTarihi, Policeler.PoliceNetPrim, Policeler.PoliceBrutPrim " _
& "FROM Policeler INNER JOIN Acente_AcenteBilgileri ON Policeler.AcenteID = Acente_AcenteBilgileri.AcenteID " _
& "WHERE (((Policeler.PoliceSirket)='" & Sirket & "') AND ((Policeler.AcenteID)='"& AcenteID & "')" _
& "AND ((Policeler.PoliceTanzimTarihi)>=" & HaftaBasi & " And (Policeler.PoliceTanzimTarihi)<=" & HaftaSonu & " ))"
08/09/2009, 12:12

siberonik

Teşekkürler Nurullah bey dediğiniz gibi yaptım oldu. yalnız tarih ayracını sistemde genel olarak değiştirmeden kod içerisinde değiştirebilsek aslında daha hoş olur. Biöyle bir imkanımız varmı?
Değişkenleri Variant yapınca ve atanacak değereide aşağıdaki gib değiştirince istediğim oldu.

HaftaBasi = Day(RST1!Baslama) & "/" & Month(RST1!Baslama) & "/" & Year(RST1!Baslama)
HaftaSonu = Day(RST1!Bitis) & "/" & Month(RST1!Bitis) & "/" & Year(RST1!Bitis)
08/09/2009, 12:37

Nurullah_Serdar

tarih ayracının . veya / olmasının diğer kullandığınız programlarda hiç bir önemi yok diye düşünüyorum. kod kalabalığı ve tür değiştirmek yerine en güzeli tarih ayracını değiştirmek.

Ölçüt olarak belirttiğimiz ifadeyi yazarken dikkat edilmesi gerekli birkaç noktayı anlatmak istiyorum.

1-Ölçüt içinde tarih kullanacağımızı varsayarak bilgisayarımızın “.” olan tarih ayracını “/” olarak değiştirmemiz gerekmektedir. Kullanmış olduğumuz program İngiliz dilini kullanarak çalıştığından bizim kullandığımız “.” işareti hataya neden olmaktadır.

2- bu hatanın bir diğer nedeni hangi tür veride hangi ayracı kullanacağımız.

Metin için

…… Adi='" & me.adi & "' and Soyadi='" & me.soyadi & "' and …..

Sayı için

…. Id=" & me.Id & " and Sicili="& me.Sicili & " and ……

Tarih için
…… GirisTarihi=#" & me.GirisTarihi & "# AND CikisTarihi=#" & me.CikisTarihi& "# AND…..
08/09/2009, 14:42

benremix

Katkı ve paylaşımlarınız için emeği geçenlere teşekkürler.
Saygılar...
1 2