kayıt update 'de problem.

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
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

kayıt update 'de problem.

Mesaj gönderen true_false »

merhabalar
vt=firebird;
yazdığım kod

Kod: Tümünü seç

UPDATE FIELD_MASTER FM SET FM.AREA_TYPE_ID ='7,1' WHERE FM.AREA_TYPE_ID IS NULL
bu çalıştırdığım zaman
aldığım hata
Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
değiştirmek istediğim alan
FM.AREA_TYPE_ID -------> AREA_TYPE.AREA_TYPE_ID ile foreign key
FIELD_MASTER.AREA_TYPE_ID tablomda ındex olarak tanımlı
bu değişkliği nasıl sağlayabilirim?
not şimdiden vermiş olduğunuz güzel cevaplar için teşekkür ederim
type
Tform1 = class(Tform)
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: kayıt update 'de problem.

Mesaj gönderen sadettinpolat »

Kod: Tümünü seç

UPDATE FIELD_MASTER FM SET FM.AREA_TYPE_ID =7.1 WHERE FM.AREA_TYPE_ID IS NULL


şeklinde dene

FM.AREA_TYPE_ID bu alanın tipi nedir ?
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Mesaj gönderen true_false »

hocam ölede denedim ama malesef olmadı
alanın tipi string
type
Tform1 = class(Tform)
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

triggerın var mı?
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Mesaj gönderen true_false »

triger'ım var bunu neden sorduğunu anlıyamadım?
AREA_TYPE BIO ---before insert---

Kod: Tümünü seç

AS
begin
  if (NEW.area_type_id IS NULL) then
      NEW.area_type_id = gen_id(gen_area_type,1)||','||NEW.DEPARTMANT_NO;
  IF (New.opt IS NULL) THEN New.opt = 1;
  NEW.record_date_time = current_timestamp;
end
AREA_TYPE BUO ---before update--

Kod: Tümünü seç

AS
begin
  NEW.record_date_time = current_timestamp;
end
FIELD_PORTION BIO---before insert---

Kod: Tümünü seç

AS
begin
  if (NEW.field_portion_id IS NULL) then
      NEW.field_portion_id = gen_id(gen_field_portion,1)||','||NEW.DEPARTMANT_NO;
  IF (New.opt IS NULL) THEN New.opt = 1;
  NEW.record_date_time = current_timestamp;
end
FIELD_PORTION BUO --before update---

Kod: Tümünü seç

AS
begin
  NEW.record_date_time = current_timestamp;
  update field_portion_resellers frm set frm.record_date_time = current_timestamp
      where (
              (frm.portion_id = new.field_portion_id)
             );

end
belki gözden kaçırdığım bişey vardır
zaten bugün başıma ilginç ilginç hatalar geliyo
type
Tform1 = class(Tform)
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Verdiği Hata yazdı:taşma veya sıfıra bölme oluştu. aritmetik istisnai durum
1. string kulandığın için verdiğin karakter sayısını aşıyor oalbilirsin

2. 0 a bölme işlemi olabilir.

Trigeri sormamdaki kastım, yaptığın update de bir sorun gözükmüyor , triggerda yapılan bir işlem bu hataya sebep oluyor olabilir. Bunu bir gözden geçir.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Merhaba.

AREA_TYPE_ID fieldinin index tipi "Primary Key" mi "Foreign Key" mi?
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Mesaj gönderen true_false »

AREA_TYPE gibi il ilçe ısıtma vb... gibi bir sürü aynı özelliklere sahip 13 adet table'ım var bu alanlardaki bilgilerimi view ile bir liste dökümü almak istedim bu AREA_TYPE , il ilçe mevki ..... tablolarından FIELD_MASTER tabloma foreign keyler ile bağlı yani il bilgisi ilçe bilgisi girilmemiş alanlarıma bu update sql cümleciğini uyguladım örn
eğer field master da il bilgisi null ise ----BELİRTİLMEMİŞ gibi bi ibare attım
aynı olayı area_type tabloma uygulamak istedim ama hata aldım

bilgin açısından
CITY_BIO

Kod: Tümünü seç

AS
begin
 if (NEW.city_id IS NULL) then
    NEW.city_id= gen_id (gen_city,1)||','||NEW.DEPARTMANT_NO;
 IF (New.opt IS NULL) THEN New.opt = 1;
 if (NEW.record_date_time IS NULL) then NEW.record_date_time = current_timestamp;
end
aynı cümleciği CITY DE uyguladım
amacım sadece boş geçilen kayıtlara BELİRTİLMEMİŞ olarak düzeltmek
:idea:

:!: :!: :!: :!: yanlış anlaşıldıysam özr dilerim naile :!: :!: :!:

blue alone = foreign key
type
Tform1 = class(Tform)
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Bu durumda dışardan yorum yapmak zor ama herhangi bi consol uygulamasıyla kayıt girmeyi deneyin..Alanın özellikle girilmesi gereken, kıstası olan bi değeri yoksa tabii..
Cevapla