Access'de Boş Tarih Alanına Değer Verilmesin!!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
R.K.
Üye
Mesajlar: 82
Kayıt: 02 Nis 2007 12:05
Konum: Adana

Access'de Boş Tarih Alanına Değer Verilmesin!!

Mesaj gönderen R.K. »

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?
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
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!!

Mesaj gönderen sabanakman »

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. - .
R.K.
Üye
Mesajlar: 82
Kayıt: 02 Nis 2007 12:05
Konum: Adana

Re: Access'de Boş Tarih Alanına Değer Verilmesin!!

Mesaj gönderen R.K. »

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?
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Access'de Boş Tarih Alanına Değer Verilmesin!!

Mesaj gönderen unicorn64 »

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.

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

yada

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;
ş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

Kod: Tümünü seç

edtTarih.text:=adoquery1.fieldbyname('tarih_alani').asstring;
ş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...
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...

Resim
Cevapla