firebird de değişkeni field gibi kullanma
firebird de değişkeni field gibi kullanma
merhaba arkadaşlar,
firebirde de trigger içinde tanımladığım bi alanı field gibi kullanmak istiyorum kod aşağıdaki gibi yardımcı olursanız sevinirim.
AS
declare variable DepoNumarasi VarChar(100);
begin
DepoNumarasi = ' ';
DepoNumarasi = 'Depo_'+Cast(New.depokodu As varchar(100));
Update Stok Set DepoNumarasi = COALESCE(DepoNumarasi,0) - new.miktari where stok_kodu = new.stok_kodu;
end
firebirde de trigger içinde tanımladığım bi alanı field gibi kullanmak istiyorum kod aşağıdaki gibi yardımcı olursanız sevinirim.
AS
declare variable DepoNumarasi VarChar(100);
begin
DepoNumarasi = ' ';
DepoNumarasi = 'Depo_'+Cast(New.depokodu As varchar(100));
Update Stok Set DepoNumarasi = COALESCE(DepoNumarasi,0) - new.miktari where stok_kodu = new.stok_kodu;
end
Re: firebird de değişkeni field gibi kullanma
Kod: Tümünü seç
AS
declare variable DepoNumarasi VarChar(100);
begin
DepoNumarasi = ' ';
DepoNumarasi = 'Depo_'+Cast(New.depokodu As varchar(100));
execute statement
'Update Stok Set ' || DepoNumarasi || '= COALESCE(' || DepoNumarasi || ',0) - new.miktari where stok_kodu = new.stok_kodu;'
end
Re: firebird de değişkeni field gibi kullanma
anemos yazdı:Kod: Tümünü seç
AS declare variable DepoNumarasi VarChar(100); begin DepoNumarasi = ' '; DepoNumarasi = 'Depo_'+Cast(New.depokodu As varchar(100)); execute statement 'Update Stok Set ' || DepoNumarasi || '= COALESCE(' || DepoNumarasi || ',0) - new.miktari where stok_kodu = new.stok_kodu;' end
kodu aynen yazdığımda triggeri oluşturdu ancak kayıt girince şöyle bi hata verdi
Error Message:
----------------------------------------
Overflow occurred during data type conversion.
conversion error from string "Depo_".
At trigger 'PESINSATISDETAY_AI0' line: 9, col: 3.
neyi convert etmeye çalıştığını açıkçası anlamadım,
bakma imkanınız varsa sevinirim. kolay gelsin.
Re: firebird de değişkeni field gibi kullanma
Aşağıdaki gibi deneyin.
Kod: Tümünü seç
DepoNumarasi = 'Depo_' || Cast(New.depokodu As varchar(100));
execute statement
'Update Stok Set ' || DepoNumarasi || '= COALESCE(' || DepoNumarasi || ', ''0'') - new.miktari where stok_kodu = new.stok_kodu;'
Re: firebird de değişkeni field gibi kullanma
anemos yazdı:Depo numarası null ise "0" ata demişsiniz. Bundan olabilir. Aşağıdaki gibi kullanırsanız sanırım olacak.
Kod: Tümünü seç
'Update Stok Set ' || DepoNumarasi || '= COALESCE(' || DepoNumarasi || ', ''0'') - new.miktari where stok_kodu = new.stok_kodu;'
ondan değil sanırım yukarıda depo numarasını 'Depo_' sonuna ekleme çalıştığım satır ile ilgili bi hata veriyor söylediğiniz gibi yapap denedim yine aynı şekilde hata verdi
bakabilirmisiniz tekrar
Re: firebird de değişkeni field gibi kullanma
biraz konu dışı ama her bir deponuz için stok tablonuzda depo_ ile başlayan bir alanınız mı var?
neden ayrı bir tabloda takip etmek yerine stok tablosunda bir alandan takip ediyorsunuz ki, yeni bir depo eklendiğinde alan eklemeniz gerekcektir...
ayrıca aldığınız hatanın sebebi de sql tarafındaki string birleştirmesinde + değil || işareti kullanmanız gerek. + yı görünce toplama işlemi yapmaya çalışıyor ve 'Depo_' yu sayıya çeviremediği için patlıyor...
neden ayrı bir tabloda takip etmek yerine stok tablosunda bir alandan takip ediyorsunuz ki, yeni bir depo eklendiğinde alan eklemeniz gerekcektir...
ayrıca aldığınız hatanın sebebi de sql tarafındaki string birleştirmesinde + değil || işareti kullanmanız gerek. + yı görünce toplama işlemi yapmaya çalışıyor ve 'Depo_' yu sayıya çeviremediği için patlıyor...
Kod: Tümünü seç
DepoNumarasi = 'Depo_' || Cast(New.depokodu As varchar(100));
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...
Re: firebird de değişkeni field gibi kullanma
şöyle söyleyeyim yeni depo açılışında scriptle program içinden stok tablosuna o fieldi creat ediyorum. ekleme veya çıkartmalardada anemos un verdiği destek ile hangi depoya eklenip çıkaralcağını parametrik yaptım yani işlem yapılırken hangi deponun numarası girilmişse depo_ nin sonuna depo numarasını ekleyip o fieldi artırıp azaltıyorum .
her ikinizede verdiğiniz değerli cevaplar için teşekkür ederim. kolay gelsin
her ikinizede verdiğiniz değerli cevaplar için teşekkür ederim. kolay gelsin
Re: firebird de değişkeni field gibi kullanma
eğer program henüz sahada uygulanmaya başlanmadıysa veya sınırlı sayıda kullanılıyorsa yapıyı gözden geçirmekte fayda var derim...
ileriye dönük düşündüğünüzde beklenmedik sıkıntılar; raporlamalarda, hesaplamalarda gereksiz uğraşlarla sıkıntılarla yüzleşmek durumunda kalabilirsiniz şuanki yapıyla...
ileriye dönük düşündüğünüzde beklenmedik sıkıntılar; raporlamalarda, hesaplamalarda gereksiz uğraşlarla sıkıntılarla yüzleşmek durumunda kalabilirsiniz şuanki yapıyla...
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...
Re: firebird de değişkeni field gibi kullanma
unicorn64 yazdı:eğer program henüz sahada uygulanmaya başlanmadıysa veya sınırlı sayıda kullanılıyorsa yapıyı gözden geçirmekte fayda var derim...
ileriye dönük düşündüğünüzde beklenmedik sıkıntılar; raporlamalarda, hesaplamalarda gereksiz uğraşlarla sıkıntılarla yüzleşmek durumunda kalabilirsiniz şuanki yapıyla...
anladım henüz sahaya sürmedik aslında tek depo mantığıyla çalışan bi yazılımımımz var zaten bunu çoklu depo ile başka şehirlerde şubeleri olan firmalar için hazırlıyorum ihtiyaç nedeniyle, henüz tamamlanmadı yazılım , sizin ne gibi bi öneriniz olabilir peki çoklu depo ve seyyar araç kullanımı ile ? değerli fikirlerinizi yazarsanız sevinirim.