Access'de Boş Tarih Alanına Değer Verilmesin!!
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Access'de Boş Tarih Alanına Değer Verilmesin!!
Merhaba arkadaşlar. Yaptığım basit bir bir denemede accesste tarih alanı boş ise değer atanmasını nasıl engellerim. DateTimePicker nesnesi kullanıyorum. Eğer cheched değilse vt ye kayıt girerken boş bırakmasını istiyorum fakat ne yaptıysam 30.12.1899 gibi bir değer veriyor ve sanırım bu accessin özelliği. Bu alana bişey yazmadan geçmesiniz saplayamaz mıyım?
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Access'de Boş Tarih Alanına Değer Verilmesin!!
TDateTime değeri eğer 0 sa 30.12.1899 tarihini gösterir. Bknz: "ShowMessage(DateToStr(0));" O yüzden veritabanınızda Null (yani boş) olan değerleri bu şekilde görüyor olabilirsiniz. Yani bu durumun sebebi Access değil, delphidir. Tabi değeri ne yöntemle gösteriyorsanız yapınızı bu bilgiye göre tekrar gözden geçirmelisiniz.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Access'de Boş Tarih Alanına Değer Verilmesin!!
Hocam access tabloma AdoDataSet nesnesi ile erişiyorum. Veri eklerkende tarih alanını TDate türünden bir değişkene aktarıyorum ve access tabloma ekliyorum. Fakat tarih alanına birşey girmezsem o alana bişey eklemesini istemiyorum. Yaptığım bu idi sadece. Hani string türler için "" veya atayabileceğimiz türler için null gibi bir atamayı tarih türünden olan alanlar için nasıl yaparız? Yani tarih alanını nasıl null gösteririz?
Re: Access'de Boş Tarih Alanına Değer Verilmesin!!
mesajlarınızın içeriği çelişti sanki, veritabanındaki tarih alanına null değer mi atamak istiyorsunuz, yoksa veritabanında null değerli tarih alanının programda değerini alıp gösterirken boş mu göstermek istiyorsunuz?
null değer kaydetmek istiyorsanız, veritabanında alan null olabilir olarak tanımlı olmalı, kayıt yaparken de ya o alana değer ataması yapmazsınız, yada kod ve mantık bütünlüğü açısından null değer atarsınız.
yada
şeklinde kullanabilirsiniz.
not: delhi kodunda sadece mantığı göstermek için yazdım, nesne propertyleri tam olmayabilir...
eğer sorun değer göstermekteyse ve
şeklinde bir kullanım varsa, datetimepicker da boş değer gösterilememesi ve null olan tarih alanının asdatetime la alındığında 30.12.1899 değeri alınmasından kaynaklı bir durum söz konusu olur. onun yerine
şeklinde bir deneyin...
edit: mesajlarınızı 2.kez okuyunca datetimepicker ve Tdate kullandığınızı belirtmiş olduğunuzu gördüm. tarih kaydını checkbox ın işaretli olup olmama durumuna göre kaydettiğinize göre, işaretliyse değeri aktarın, işaretli değilse null olarak kaydedin,
ama gösterimde datetimepicker ı kullanmak null alanlar için hala sıkıntı olacaktır...
null değer kaydetmek istiyorsanız, veritabanında alan null olabilir olarak tanımlı olmalı, kayıt yaparken de ya o alana değer ataması yapmazsınız, yada kod ve mantık bütünlüğü açısından null değer atarsınız.
Kod: Tümünü seç
insert into tablo(sayi_alani,tarih_alani) values (222,null); -- alana null değer atanmış
insert into tablo(sayi_alani) values (222); -- alana değer atanmadığı için null olacaktır
Kod: Tümünü seç
uses variants;
adoquery1.sql.text:='insert into tablo(sayi_alani,tarih_alani) values (222,null)';
adoquery1.params[0].asinteger:=222;
adoquery1.params[0].asvariant:=null;
şeklinde kullanabilirsiniz.
not: delhi kodunda sadece mantığı göstermek için yazdım, nesne propertyleri tam olmayabilir...
eğer sorun değer göstermekteyse ve
Kod: Tümünü seç
datetimepicker1.date:=adoquery1.fieldbyname('tarih_alani').asdatetime;
Kod: Tümünü seç
edtTarih.text:=adoquery1.fieldbyname('tarih_alani').asstring;
edit: mesajlarınızı 2.kez okuyunca datetimepicker ve Tdate kullandığınızı belirtmiş olduğunuzu gördüm. tarih kaydını checkbox ın işaretli olup olmama durumuna göre kaydettiğinize göre, işaretliyse değeri aktarın, işaretli değilse null olarak kaydedin,
ama gösterimde datetimepicker ı kullanmak null alanlar için hala sıkıntı olacaktır...
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...
