default value

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
sule
Üye
Mesajlar: 8
Kayıt: 03 Tem 2007 04:33
Konum: Erzurum

default value

Mesaj gönderen sule »

Merhaba
Sormak istediklerim şunlar
1- firebird'de oluşturduğum table üzerinde bazı (default value) değerler tanımlamıştım. bazılarını domain ile bazılarını ise direkt ilgili kısma değerini girerek. ibexpert üzerinde table'ın data kısmına kayıt girerken sorun yok, boş geçtiğim alanlara tanımladığım değerleri atıyor ancak program içinden kayıt girerken bu alanları hep null olarak atıyor. yani benim tanımladığım varsayılan değerleri görmüyor. bu sorunu delphi kısmında nasıl aşabilirim?
2-stok hareket kısmına stok kodunu (dbgrid şeklinde) otomatik yazsın istiyorum, her defasında kullanıcı kod girmek zorunda kalmasın diye.bunu bir editten okutmaya ve yazdırmaya çalışıyorum ama bu da olmuyor. Bana önerebileceğiniz bir fikir varmı veya eksik bıraktığım birşeyler olabilir mi?
(stok ve stokhareket dosyaları birbirine foreign key ile bağlı. stok kodu üzerinden)
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
1. Firebirdin verdiği varsayılan değerleri görebilmeniz için tabloyu kapatıp açmanız veya ilgilisatırı refresh etmeniz lazım. Siz fb ye null gönderiyorsunuz fb ona gerekli değerleri veriyor ancak tabloyu refresh etmediğiniz için fb nin verdiği değeri göremiyorsunuz.

2. Kullandığınız bileşene(table,query,dataset vs) göre o alanın otomatik gelmesi değişir. eğer bağlantıları yaptıysanız kullanıcının o alana değer girmesine gerek yok.
şöyle bir yöntemde işinizi görebilir. detail kaydın on new record (veya afterisnert) olayında ilgili alan gereken değeri atarsınız. böylelikle kullanıcının o alan için değer girmesine gerek kalmaz.

kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Delphinin ibx bileşenlerinde böyle bir sorun var, yani firebird de table üzerinde ki default degerleri kullanamıyor.
bunu before_insert triggerında manuel yapmanız en dogrusu.
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

aynı sorunu ben de boolean alanlarda yaşıyordum,
onun için manuel olarak newrecord olayında false değeri atıyorum.
sule
Üye
Mesajlar: 8
Kayıt: 03 Tem 2007 04:33
Konum: Erzurum

Mesaj gönderen sule »

Teşekkür ediyorum ama sorunları çözemedim biraz daha yardım lütfen,
Kullandığım bileşen dataset. Master-detail olayında bir sorun yok. Stokhareket datasetinin Datasource özelliğine stok dosyasının datasource’ü olan Datastok’u atadım. Select sql kısmına da ‘where skod=:skodu’ kodunu ekledim. Böylece çalışma anında master-detail özelliği doğru çalıştı. Stokhareket datasetinin insert sql özelliğinde ise;
insert into TB_STOKHAR
(SKOD,TARIH,FIS_NO,TUR,FIYAT,GIREN,CIKAN,ACIKLAMA)
values
(:SKODU, :TARIH, :FIS_NO, :TUR, :FIYAT, :GIREN, :CIKAN, :ACIKLAMA)

Şeklinde tanımladım, yani skod, stokhareket dosyasındaki stokkodu alanı, skodu ise stok dosyasının stokkodu alanı. Bu şekilde bir atama yapılınca otomatik okur diye düşündüm ama yine de okumadı. Söylediğiniz gibi bu değeri otomatik okuması gerekiyor bağlantılar doğru yapılınca ama, mutlaka eksik bıraktığım bir şeyler olmalı.
Ne olabilir, fikir verebilir misiniz?
***
(Çalışma anında girdiğim kayıtları daha sonra IBExpert'den kontrol ediyorum ve o alanlara atılan değerleri table üzerinde de yine null olarak gösteriyor.)
Default value değerlerde ise refresh olayını post olayından sonra yaptırınca (afterpost) yine okumadı değerleri
Dstok.refresh;
Şeklinde kullandım. Bir de afterpost olayına
Datamdl.IBTMuhasebe.CommitRetaining;
şeklinde bir kod kullanıyorum.

(Bu biraz ezber oldu galiba çünkü tam olarak ne işe yaradığını bilmiyorum. sadece table üzerindeki commit olayının aynı olduğunu tahmin ettim.)
Son olarak datasetlerim form üzerinde ancak database ve transaction datamodül üzerinde bulunuyor. Bu bir sorun oluşturur mu veya sorunun nedeni bu olabilir mi?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
ibx bileşenlerinde refresh düzgün çalışmıyor malesef tabloyu close/open yapmanız lazım. (yada refresh sql e uygun bir sql cümlesi yazmak lazım ama ne olduğunu ben tutturamadım).
kayıt yaptınız. default değerler gelmedi. programı kapatıp açtığınızda gene default değerleri almış bi şekilde gelmiyorsa o zaman default değerleri manuel atmanız lazım. eğer default değerleri almış bi şekilde geliyorsa bu refresh olayına biraz daha çalışmanız lazım...
kolay gelsn.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla