Interbase de Tarih Sorunu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Interbase de Tarih Sorunu
S.A
Arkadaşlar benim sorunum tarihle ilgili. Database olarak interbase kullanıyorum programdan database bir tarih kayıt ederken:
mesela tarih "12.10.2003" olsun bu tarih database "12.10.2003 00:00" olarak kaydediyor burası tamam herhalde. Ama databaseden tarihi aldığım zaman "15.05.19041" olarak alıyor. Bunun ayarlamasını nasıl yapabilirim?
Arkadaşlar benim sorunum tarihle ilgili. Database olarak interbase kullanıyorum programdan database bir tarih kayıt ederken:
mesela tarih "12.10.2003" olsun bu tarih database "12.10.2003 00:00" olarak kaydediyor burası tamam herhalde. Ama databaseden tarihi aldığım zaman "15.05.19041" olarak alıyor. Bunun ayarlamasını nasıl yapabilirim?
DB'ye tarihi kaydederken neyi kullanıyorsun? DBDateEdit?, DateEdit, veya doğrudan SQL cümlesi ile veya SQL Cümlesinde parametre olarak mı?
İstersen source'unun o bölümünü gönder...
Kolay Gelsin.
İstersen source'unun o bölümünü gönder...
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Tarihi TDateTimePicker dan alıyorum.
İlgilendiğiniz için teşekkür ederim
Kod: Tümünü seç
Q_Kaydet.ParamByName('p_Ariza_Kodu').AsInteger := Q_Max_Ariza_KoduMAX.Value + 1;
Q_Kaydet.ParamByName('p_Bil_Seri_No').AsString := E_Seri_No.Text;
Q_Kaydet.ParamByName('p_Tarih').AsDate := date1.Date;
Q_Kaydet.ParamByName('p_Kullanici_Adi').AsString := E_Kullanici_Adi.Text;
Q_Kaydet.ParamByName('p_Kullanici_Bolumu').AsString := ComboBox1.Text;
Q_Kaydet.ParamByName('p_Sikayet').AsString := E_Sikayet.Text;
Q_Kaydet.ParamByName('p_Bil_Model_No').AsString := E_Model_No.Text;
Q_Kaydet.ParamByName('p_Muhasebe_Kodu').AsString := E_Muhasebe_Kodu.Text;
Q_Kaydet.ParamByName('p_Bolge_Adi').AsString := ComboBox2.Text;
Q_Kaydet.ExecSQL;
Selam,
AsDate olarak değil de, AsDateTime olarak yap
yani
şeklinde kullanırsan sorun kalmaz sanırım. Trunc etmemizin sebebi. tarih ve saati atarken sadece günü (tarihi) atabilmen için. Aksi takdirde datetime pickerda date atarken benim de anlayamadığım bir biçimde illa saati de atıyor. Bunu engellemek için Trunc etmek gerekiyor. (FB/IB'de)
Bu arada db'de tarih alanı TimeStamp olarak kullandın değil mi?
Kolay Gelsin.
AsDate olarak değil de, AsDateTime olarak yap
yani
Kod: Tümünü seç
Q_Kaydet.ParamByName('p_Tarih').AsDateTime := Trunc(date1.Date);
Bu arada db'de tarih alanı TimeStamp olarak kullandın değil mi?
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Merhaba
Arkadaşlar öncelikle ilgilendiğiniz için hepinize çok teşekkür ederim.
Delphi 5 ve interbase 5.5 i kullanıyorum. Interbasede tarihle ilgili sadece DATE var. TIMESTAMP yok. Tarihle ilgili kolona geldiğim zaman domain diye birşey var oradan RDB$TIMESTAMP i seçtim yine olmadı.
Kuri_TLJ, göndermiş olduğunuz kodu
denedim olmadı.
Databasede tarih düzgün gibi, mesela programdan database 13.10.2003 tarihini kaydettiğim zaman '13.10.2003 00.00' olarak kaydediyor. Fakat programdan o tabloyu listelediğim zaman tarihi 19.05.1175 olarak gösteriyor.
Arkadaşlar öncelikle ilgilendiğiniz için hepinize çok teşekkür ederim.
Delphi 5 ve interbase 5.5 i kullanıyorum. Interbasede tarihle ilgili sadece DATE var. TIMESTAMP yok. Tarihle ilgili kolona geldiğim zaman domain diye birşey var oradan RDB$TIMESTAMP i seçtim yine olmadı.
Kuri_TLJ, göndermiş olduğunuz kodu
Kod: Tümünü seç
Q_Kaydet.ParamByName('p_Tarih').AsDateTime := Trunc(date1.Date);
Databasede tarih düzgün gibi, mesela programdan database 13.10.2003 tarihini kaydettiğim zaman '13.10.2003 00.00' olarak kaydediyor. Fakat programdan o tabloyu listelediğim zaman tarihi 19.05.1175 olarak gösteriyor.
Allah Allah !
Nasıl yani verdiğiniz kod örneği hata mı veriyor?
Interbase 6.0 ve Delphi 5.0 ile, FireBird 1.01, 1.03 versiyonlarında sorunsuz olarak işlem yapabiliyorum ben.
Freeman35 kardeş sen ne diyorsun bu işe?
Kolay Gelsin.
Nasıl yani verdiğiniz kod örneği hata mı veriyor?
Interbase 6.0 ve Delphi 5.0 ile, FireBird 1.01, 1.03 versiyonlarında sorunsuz olarak işlem yapabiliyorum ben.
Freeman35 kardeş sen ne diyorsun bu işe?
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Sorun listeleme sorunu olmasın sakın.
Yani eğer mesela SQL Explorer'dan baktığınız veya listelediğiniz aman tarihi düzgün grebiliyorsanız. Veya sql explorer'dan tarih girişini düzgün olarak girebiliyorsanız ve de bu girilen tarihleri hala programdan listelerken bozuk görüyorsanız, listeleme sırasındaki ilgili componentte bir sorun olabilir bi display format filan verilmiş olabilir. Kullanıdğınız sql cümlesi de önemli o cümleyi aynen sql explorer'da çalıştırdığınızdaki sonuç doğru ise listeleme sorunu olduğundan emin olabiliriz. eğer sql explorer'da da listelenirken sorunlu ise listeleme kodunu da bir gönderin orada da bir hata olabilir bu durumda.
Kolay gelsin....
Yani eğer mesela SQL Explorer'dan baktığınız veya listelediğiniz aman tarihi düzgün grebiliyorsanız. Veya sql explorer'dan tarih girişini düzgün olarak girebiliyorsanız ve de bu girilen tarihleri hala programdan listelerken bozuk görüyorsanız, listeleme sırasındaki ilgili componentte bir sorun olabilir bi display format filan verilmiş olabilir. Kullanıdğınız sql cümlesi de önemli o cümleyi aynen sql explorer'da çalıştırdığınızdaki sonuç doğru ise listeleme sorunu olduğundan emin olabiliriz. eğer sql explorer'da da listelenirken sorunlu ise listeleme kodunu da bir gönderin orada da bir hata olabilir bu durumda.
Kolay gelsin....
Eğer veritabanında TIMESTAMP yani hem tarih hem saat olarak tutacaksan ve böyle kullanmak istiyorsan;
Q_Kaydet.ParamByName('p_Tarih').AsDateTime := date1.Date; ile tarih kısmı tamam fakat saat kısmını sıfırlamış olursun.
veritabanından da alırken dikkat edeceğin sadece tarih mi lazım? Sadece tarih lazım diyorsan o zaman alanın tipini DATE seçmeliydin. Yok ilerde saat kısmı da gerekebilir diyorsan, o zaman TARIH+SAAT ten sadece TARIH i çekmen gerekiyor. Onu da ;
Date1.Date := StrToDate(FormatDateTime('dd.mm.yyyy', Q_Kaydet.ParamByName('p_Tarih').AsDateTime)); ile çekebilirsin.
Kolay gelsin.
Q_Kaydet.ParamByName('p_Tarih').AsDateTime := date1.Date; ile tarih kısmı tamam fakat saat kısmını sıfırlamış olursun.
veritabanından da alırken dikkat edeceğin sadece tarih mi lazım? Sadece tarih lazım diyorsan o zaman alanın tipini DATE seçmeliydin. Yok ilerde saat kısmı da gerekebilir diyorsan, o zaman TARIH+SAAT ten sadece TARIH i çekmen gerekiyor. Onu da ;
Date1.Date := StrToDate(FormatDateTime('dd.mm.yyyy', Q_Kaydet.ParamByName('p_Tarih').AsDateTime)); ile çekebilirsin.
Kolay gelsin.
Freeman35 derki
walla çok tuhaf.
Öncelikle IB 5x de dialect 1 kullanılır. yani Date diye geçen tip TimeStamp yani Tarih ve saat bilgisini içerir. IB6x den sonra çıkan dialect3 de tarih ve saati ayırabilirsiniz.
Soruna gelince. Neden parambyname ???? kayıt yapıyorsun madem neden direk olarak query kullanmıyorsun. fieldbyname().AsDateTime de geç. Geç kelimesi baştan savmak olarak anlaşılmasın. Ben sürekli bunu kullanırım.
IBX kullan ve bunun da yanılmıyorsam 8. update i çıktı. Mustafa sitenin bi yerine linklerini koymuştu.Borlandın sitesinden bulabilirsin bunu.
DateTime bir alana sadece tarih yazdırmak istiyorsan şunu kullanabilirsin
Kurili kardeşimin söylediklerine ek olarakta tarih bilgisi aslında real bir sayıdır. Bunun Tam sayı kısmı Tarih bilgisini ondalık kısmı ise saat bilgisini içerir.
DateTime ile ilgili olarakta TField ın DisplayFormat diye bir property si vardır buna gösterilmesini istediğin formatı verirsen o formatta gösterilir.
Yani : 14/10/2003 14:05:30 tarih bilgisi ve verdiğim format sa şu
dd mmm yyyy ddd
sonucu : 14 Ekm 2003 Sal olur
Kolay gele


walla çok tuhaf.
Öncelikle IB 5x de dialect 1 kullanılır. yani Date diye geçen tip TimeStamp yani Tarih ve saat bilgisini içerir. IB6x den sonra çıkan dialect3 de tarih ve saati ayırabilirsiniz.
Soruna gelince. Neden parambyname ???? kayıt yapıyorsun madem neden direk olarak query kullanmıyorsun. fieldbyname().AsDateTime de geç. Geç kelimesi baştan savmak olarak anlaşılmasın. Ben sürekli bunu kullanırım.
IBX kullan ve bunun da yanılmıyorsam 8. update i çıktı. Mustafa sitenin bi yerine linklerini koymuştu.Borlandın sitesinden bulabilirsin bunu.
DateTime bir alana sadece tarih yazdırmak istiyorsan şunu kullanabilirsin
Kod: Tümünü seç
xx.AsDateTime := Date1.Date + Time('00:00:01');
DateTime ile ilgili olarakta TField ın DisplayFormat diye bir property si vardır buna gösterilmesini istediğin formatı verirsen o formatta gösterilir.
Yani : 14/10/2003 14:05:30 tarih bilgisi ve verdiğim format sa şu
dd mmm yyyy ddd
sonucu : 14 Ekm 2003 Sal olur
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!