Cari yada Stok hareket ekstere Olayı..

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
Kullanıcı avatarı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

Cari yada Stok hareket ekstere Olayı..

Mesaj gönderen spoke25 »

viewtopic.php?t=13527&highlight=cari

Arkadaşlara konuyla ilgiliolarak bir bunu bulduım tam anlamı ile istediğim şey olduğunu söyleyemem..

hani şu dos tabanlı vega yı biliyormusunuz onun tarzında hareket ler oluşturmak istiyorum.

bakiye yada kalan değerlerde sorun var.

Kod: Tümünü seç


sıra no  işlem tur   giren  cikan    kalan 
0          devir          0         0          0
1           Ftr          10        0          10
2           irs          10        0          20
3          Ftr           0         5          15
4          pos          0         2          13 

diyelimki sıra nosu iki olan iptal edildi ozaman kalan degerlerii değişecek
sorunda burada zaten.

tarih alnları felan da var..
Başlayan Herşey Birgün Bitmek Zorundadır.
iqprog

Mesaj gönderen iqprog »

bu sebeplerden dolayı kalan diye bir saha veritabanında olmamalı siz bunu raporlarken hesaplatmalısınız.
Kullanıcı avatarı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

Mesaj gönderen spoke25 »

cevap tan bir sey anlamadım. Neyse bunu yapan vardı illaki. delphii tarafında olayy yapılıyor ama mademkii biz fire bird kullnıyoruz ozaman sql ile bunu yapmaklazım diye düşünüyorum.. Raporlarda yapmak işime gelmiyor. Adam rpor alsın yada almasın.. Cevabını yazarım buradan.. Butun birr haftayı buna ayıracam galiba
Başlayan Herşey Birgün Bitmek Zorundadır.
iqprog

Mesaj gönderen iqprog »

anlamayacak ne var ki.

tutar diye bir saha yaparsan herhangi bir hareket olduğu zaman tüm hareketleri dolaşıp kalan bilgisini tekrar hesaplatman gerekli. ben bunu yapan adama yazılımcı demem.

ikinci yol, kalan diye saha olmaz bunu raporlamada basitçe çözebilirsin.
Kullanıcı avatarı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

Mesaj gönderen spoke25 »

yaw Hocam ben zatenn tutar diye birr alan tanımlamadım.

Nasıll anlatsam..rapor kısını karıştırmayalaım.. Adam A stok kartına girdi ve 01.01.2006 bugun kuu tarihe kadar karta gireni çıkanı görmek istiyor

Bunu yaparken kalanıda görmek istiyor.


Faturaların irsaliyelerin veye stok fişlerinin deteylarından buraya sürekli girişler veya çıkışlar olacak.

Stok kartına ait hareket tablosu

Kod: Tümünü seç

sıra no  işlem tur   giren  cikan    kalan 
0           devir        0        0         0 
1           Ftr           10       0         10 
2           irs           10       0          20 
3           Ftr           0         5         15 
4           pos          0        2          13 

sen diyorsunki bana kalan diye bir alan ne gerek var girişleri çıkışlarıı kaydet
kalanı hesaplatırsın diyorsun ?

ozaman stok hareket tablosuna ne gerek var ben bunu fatura stok haretlerinden çeker adama gösteririm.

Evet ben bunu çözemedim. Yazılımcı değilim demekkii.

Benimm musterii vega kullnıyor ve oana benzetmem amaç.

yoksa stok kartında toplam giriş toplam çıkış stok miktarını bende hesaplatıyorum..

Biri bana bunu ayrıntılıı bir şekilde anlatabilirse sevinirim
Başlayan Herşey Birgün Bitmek Zorundadır.
iqprog

Mesaj gönderen iqprog »

söylediklerine karşılık yazmayacağım, çözümle alakalı konuşacağım sadece. sana yardım etmek istiyorum.

anladığım kadarıyla sen bu tabloyu bir formda göstermek istiyorsun o yüzden nasıl hesaplatacağız diyorsun.

bunun için sp yazacaksın fb'de. bu sp'nin input variablelarında biri başlangıç tarihi olacak, istersen bir de bitiş tarihi de koyabilirsin(adam şu tarihten şu tarihe kadar diyebilir.). sonra bir sql ile başlangıç tarihinden küçük olan tutarı hesaplatacaksın, bu nakli tutar olacak. neyse uzun olacak ben aşağıda taslak sp'yi yazayım. sp içindeki imlayı sen düzenlersin.

değişkenler
naklitutar numeric(15,2);
satirno integer;

inputdeğişkenler
cari_id integer
bastarihi date
bittarihi date

outputdeğişkenler
sirano integer
islemturu varchar(20)
giris numeric(15,2)
cikis numeric(15,2)
kalan numeric(15,2)

begin

:satirno=0;

select :satirno, 'naklitutar', sum(giris), sum(cikis), sum(giris-cikis) from chareket where tarih<:bastarihi and cari_id = :cari_id
into :sirano, :islemturu, :giris, :cikis, :kalan;
suspend;

:satirno = :satirno+1;

for select :satirno, hareketislemturu, giris, cikis, :kalan+giris-cikis from chareket where tarih between :bastarihi and :bittarihi and cari_id = :cari_id
order by tarih
into :sirano, :islemturu, :giris, :cikis, :kalan
do
begin
suspend;
:satirno = :satirno+1;
:kalan=:kalan+:giris-:cikis
end

end;



böyle işte
kafayı verip incelersen senin istediğini bu yapıyor işte.
Kullanıcı avatarı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

Mesaj gönderen spoke25 »

AllahRazı Olsun ilgine alakana. İnceleyip haber vereceğim
Başlayan Herşey Birgün Bitmek Zorundadır.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

viewtopic.php?t=13527
Buradaki konuşmalardan esinlenebilirsin :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

Mesaj gönderen spoke25 »

sp yi bu şekilde hazırladım

Kod: Tümünü seç

CREATE PROCEDURE HAREKET_PROCEDUR (
    URUN_NO INTEGER,
    ILK_TAR DATE,
    SON_TAR DATE)
RETURNS (
    SIRA_NO1 INTEGER,
    ISLEM_TUR VARCHAR(10) CHARACTER SET WIN1254,
    GIREN_MIK NUMERIC(6,4),
    CIKAN_MIK NUMERIC(6,4),
    KALAN_MIK NUMERIC(6,4))
AS
DECLARE VARIABLE SATIR_NO INTEGER;
begin
Satir_no=0;

select :satir_no,'Devir', sum(gir_mik), sum(cik_mik), sum(gir_mik-cik_mik)
from urun_hrkt
where isl_tar<:ilk_tar and urun_kod = :urun_no
into :sira_no1, :islem_tur, :giren_mik,:cikan_mik,:kalan_mik;
suspend; 

satir_no = :satir_no+1;

for select :satir_no,belge_tip,gir_mik,cik_mik,:kalan_mik+gir_mik-cik_mik
from urun_hrkt
where isl_tar
between :ilk_tar and :son_tar and urun_kod=:urun_no
order by isl_tar
 into :sira_no1,:islem_tur,:giren_mik,:cikan_mik,:kalan_mik

do
begin 
suspend;
satir_no = :satir_no+1;
kalan_mik=:kalan_mik+:giren_mik-:cikan_mik;
end 

end
fakat delphiden çağırıken sorunlar yaşlıyorum sorun nerde ?

Kod: Tümünü seç

ib.Active:=false;
ib.Close;
ib.SQL.Add('select urun_no,ilk_tar,son_tar ');
ib.SQL.Add('from HAREKET_PROCEDUR ');
ib.ParamByName('urun_no').AsInteger:=strtoint(edit1.Text);
ib.ParamByName('ilk_tar').AsDate:=cx1.Date;
ib.ParamByName('son_tar').AsDate:=cx2.Date;
ib.open;
ib.Active:=true;
urun no parametresi yok felen diyor..
Başlayan Herşey Birgün Bitmek Zorundadır.
iqprog

Mesaj gönderen iqprog »

hakancan aşağıda güzel anlatmış
En son iqprog tarafından 18 Eki 2006 04:09 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

SP'leri parametreli tanımladığında parametreyi SP'nin yanında parantez içinde vereceksin. Normal Delphi Procedure'leri gibi:

SELECT * FROM HAREKET_PROCEDUR(1, '1-1-2006', '11-11-2006') şeklinde:

Kod: Tümünü seç

ib.Active:=false;
ib.Close;
ib.SQL.Clear;
ib.SQL.Add('select urun_no,ilk_tar,son_tar ');
ib.SQL.Add('from HAREKET_PROCEDUR(' + strtoint(edit1.Text) + ', ''' + FormatDateTime('mm-dd-yyyy', cx1.Date) + ''', ''' + FormatDateTime('mm-dd-yyyy', cx2.Date) + ''')');
ib.open;
ib.Active:=true;
Yalnız burada eğer farklı ise 'mm-dd-yyyy' yerine FireBird'ün sendeki formatını yazmalısın. Gerçi başka alternatif çözümler de var (parametre vs.) artık gerisi senin yazılım tekniğine kalmış.

İyi çalışmalar.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Parametreli daha stabil çalışır, tarih dönüşümü sorununu da kendisi çözüyor...

Kod: Tümünü seç

Select a, b, c from SP_Procedure(:Parametre1, :Parametre2);
gibi...
Kullanıcı avatarı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

Mesaj gönderen spoke25 »

Evet parametre olarak qry ile çalıştı.. İprog başta olmak üzere herkese teşekur ederim Sproc Da bazi buglar olduğunu öğrendim.
Allah C.C Razı Olsun
Başlayan Herşey Birgün Bitmek Zorundadır.
Cevapla