bu SP işlerine bende merak saldım en azından raporlar için yalnız biyerde takıldım forumda 3-4 arkadş daha sormuş cevapları kendime uyarlayamadım yada farklı şeyler sormuşuz..
şimdi aşağıdaki gibikendime hello word SP si yazdım...
begin
select max(KAYIT_ID) FROM STOKHRKT
WHERE STOKKODU=:STOKKODU
AND tarih >= :tarih1
AND tarih <= :tarih2
into :EN_BUYUK;
suspend;
end
stok hareket tablosunda iki tarih arasındaki kodu verilen stok kartının en büyük kayit_id değerini getiriyor..güzel problem yok...fakat kullanıcı buradaki bütün parametreleri girmek zorunda kalıyor yani stok kodunu,ilk tarihi ve son tarihi..benim istediğim kullanıcı isterse stok koduna değer yazmayabilir o zaman tüm kartlardaki en büyük kayit_id yi getirsin veya tarih leri yazmasa tüm tarihlere baksın gibi..
bunun için where kısmını nasıl yazmam gerekli acaba..
begin
select max(KAYIT_ID) FROM STOKHRKT
WHERE STOKKODU= COALESCE(:STOKKODU, STOKKODU)
AND tarih >= :tarih1
AND tarih <= :tarih2
into :EN_BUYUK;
suspend;
end
COALESCE veya CASE WHEN kullanarak istediğini yapabilirsin.
Bu kod için STOKKODU parametresine NULL girersen bütün stok kodlarına bakar.
qry.Close;
qry.SelectSQL.Clear;
qry.SelectSQL.Add('select * from SP_BASIT(:STOKKODU,:TARIH1,:TARIH2) ');
if cxTextEdit1.Text='' then
qry.ParamByName('STOKKODU').Value:=NULL
else
qry.ParamByName('STOKKODU').AsString:=cxTextEdit1.Text;
if cxDateEdit1.Text='' then
qry.ParamByName('TARIH1').Value:=NULL else
qry.ParamByName('TARIH1').AsDate:=cxDateEdit1.Date;
if cxDateEdit2.Text='' then
qry.ParamByName('TARIH2').Value:=NULL else
qry.ParamByName('TARIH2').AsDate:=cxDateEdit2.Date;
QRY.Open;