default source'lar değerini almıyor!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

default source'lar değerini almıyor!

Mesaj gönderen nitro »

s.a.
vt firebird 1.5
tasarım aracı: ibexpert
tablolarda bazı fieldleri default değerleri var
örneğin:

Kod: Tümünü seç

odano integer default(0);
isim    varchar(20) default('TANIMSIZ MÜŞTERİ');
İBexpertten giriş yaparken herşey normal
default değerler değerini alıyor, computed source lar hesaplanıyor.
ama delphiden kayıt yapatığım zaman default değerler değerini almıyor ve computed sourcelar hesaplanmıyor.
not: commit olaylarında sorun yok.
sorunuma yardımcı olursanız sevinirim. şimdiden teşekkürler. AEO
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Veritabanının default değeri alabilmesi için INSERT INTO komutuna alanın eklenmemesi gerekiyor. Fakat Delphi'de INSERT SQL'i generate ederken genelde her alanı koyduğumuzdan bu işlem gerçekleşmez.

Yani Insert SQL:

INSERT INTO tablo (:odano, :isim) ise veritabanı isim'e default değeri vermeyecektir.

Default değer alabilmesi için Insert SQL'in:

INSERT INTO tablo (:odano) 'ya dönüştürülmesi gerekir.

Tabii bu sefer de isim alanı girildiği zaman nasıl insert edecek diye bir problemle karşı karşıya kalırız.

Burada insert sql değerini dinamik olarak, ilgili alanın değeri girilmişse şu olsun girilmemişse de şu şeklinde değiştirmek bir çözüm olabilir. Ancak epey bir kod yazma yükümlülüğüne girmek gerekir ve yazılan kodun her koşulda doğru çalıştığından emin olmak gerekir.

O yüzden en iyisi default kullanmaktan vazgeçip bu işi trigger'lar ile halletmektir.

"İlgili alan değeri null ise (yani değer girilmemişse) ilgili alanı 'TANIMSIZ MÜŞTERİ' olarak doldur" şeklindeki bir trigger kodu kolayca yazılabilir.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

default deger atamak icin before insert
kayıt girisini kontrol icin before insert-update triggerlarını kullanabilirsiniz.
ÜŞENME,ERTELEME,VAZGEÇME
Cevapla