Yorumları: 117
Konuları: 21
Kayıt Tarihi: 01-09-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 78 Başlangıç
27-03-2020, Saat: 00:53
(Son Düzenleme: 27-03-2020, Saat: 10:59, Düzenleyen: Aktolgali.)
Merhaba arkadaşlar;
Bir tablom var, o tablomdan SP ile aynı isimli ürünlerin toplamını almak istiyorum. Aslında yazdığım kodla aldım ama kayıt sayısı kadar sonuç veriyor bana.
Bu tablom
[img]  [/img]
Yazdığım SP şöyle
CREATE OR ALTER PROCEDURE SPREP_GUNLUKHAREKETDETAY
RETURNS (
STSTARIH DATE,
STOKAD VARCHAR(100),
MIKTAR DECIMAL(12,6),
ACIKLAMA VARCHAR(25),
SATISFIYAT DECIMAL(12,6),
ALISFIYAT DECIMAL(12,6),
KDV DECIMAL(12,6))
AS
begin
for
select distinct(hd_stokad), hd_tarih, hd_miktar, hd_hareketturu, hd_birimfiyat, hd_alisfiyat, hd_kdv
from tbl_hareketdetay where hd_tarih='today'
into :stokad, :ststarih, :miktar, :aciklama, :satisfiyat, :alisfiyat, :kdv
do
begin
select sum(hd_miktar)
from tbl_hareketdetay where hd_stokad=:stokad and hd_tur=3
into miktar;
suspend;
end
end
dönen sonuç
burada sorunsuz bir şekilde, aynı isme sahip ürünlerin miktarının toplamını, miktar alanında alıyor. Fakat "distinct" kullanmama rağmen her kayıt için bir değer gösteriyor.
[img]  [/img]
Benim olmasını istediğim
[img]  [/img]
kod'a kırk takla attırdım ama sonuç alamadım. Yardımcı olursanız sevinirim.
İyi geceler
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
Yorumları: 852
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.327 Uzman
27-03-2020, Saat: 01:13
(Son Düzenleme: 27-03-2020, Saat: 01:39, Düzenleyen: hi_selamlar.)
(27-03-2020, Saat: 00:53)Aktolgali Adlı Kullanıcıdan Alıntı: Merhaba arkadaşlar;
Bir tablom var, o tablomdan SP ile aynı isimli ürünlerin toplamını almak istiyorum. Aslında yazdığım kodla aldım ama kayıt sayısı kadar sonuç veriyor bana.
Yazdığım SP şöyle
CREATE OR ALTER PROCEDURE SPREP_GUNLUKHAREKETDETAY
RETURNS (
STSTARIH DATE,
STOKAD VARCHAR(100),
MIKTAR DECIMAL(12,6),
ACIKLAMA VARCHAR(25),
SATISFIYAT DECIMAL(12,6),
ALISFIYAT DECIMAL(12,6),
KDV DECIMAL(12,6))
AS
begin
for
select distinct(hd_stokad), hd_tarih, hd_miktar, hd_hareketturu, hd_birimfiyat, hd_alisfiyat, hd_kdv
from tbl_hareketdetay where hd_tarih='today'
into :stokad, :ststarih, :miktar, :aciklama, :satisfiyat, :alisfiyat, :kdv
do
begin
select sum(hd_miktar)
from tbl_hareketdetay where hd_stokad=:stokad and hd_tur=3
into miktar;
suspend;
end
end
dönen sonuç
burada sorunsuz bir şekilde, aynı isme sahip ürünlerin miktarının toplamını, miktar alanında alıyor. Fakat "distinct" kullanmama rağmen her kayıt için bir değer gösteriyor.
[img] [/img]
Benim olmasını istediğim
[img] [/img]
kod'a kırk takla attırdım ama sonuç alamadım. Yardımcı olursanız sevinirim.
İyi geceler
Merhabalar,
Group by STOKAD
deneyin lütfen.
Nacizane tavsiyem, Group by veya Where koşullarında direk isim kullanmayın.
ID (int) ile işlem yapmanızı öneririm. Hem hataların önüne geçmek, hem de hız kazanmak için.
Index de unutmayın...
Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Yorumları: 89
Konuları: 9
Kayıt Tarihi: 14-08-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 305 Acemi
Hareket tablosunu distinct yaparak toplam almak hatalı bir kurgu gibi görünüyor. Örneğin alış veya satış fiyatının aynı olmaması durumunda, "distinct" tekrarlı sonuç döndürebilir. Sorgunuzu tekrar gözden geçirmenizi tavsiye ederim.
Yorumları: 884
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.853 Uzman
Stokları stok hareketlerinden değilde stok tablosundan çekin, sonuçta hareket tablosunda işlemtürü, satış fiyatı, alış fiyatı vs. nin görünmesine gerek yok, Stok tablosunun altında hareketleri gösterin sadece, alış satış fiyatlarınında ortalamasını gosterebilirsiniz.
Yorumları: 117
Konuları: 21
Kayıt Tarihi: 01-09-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 78 Başlangıç
27-03-2020, Saat: 09:55
(Son Düzenleme: 27-03-2020, Saat: 10:06, Düzenleyen: Aktolgali.)
(27-03-2020, Saat: 09:30)esistem Adlı Kullanıcıdan Alıntı: Stokları stok hareketlerinden değilde stok tablosundan çekin, sonuçta hareket tablosunda işlemtürü, satış fiyatı, alış fiyatı vs. nin görünmesine gerek yok, Stok tablosunun altında hareketleri gösterin sadece, alış satış fiyatlarınında ortalamasını gosterebilirsiniz.
@ esistem hocam bu eski çalışan bir program, dolayısıyla dediğiniz şeyler doğru ama yapısal değişikliğe gidip bir sürü iş çıkarmak istemiyorum. Verdiğiniz fikir için teşekkür ederim.
(27-03-2020, Saat: 01:13)hi_selamlar Adlı Kullanıcıdan Alıntı: (27-03-2020, Saat: 00:53)Aktolgali Adlı Kullanıcıdan Alıntı: Merhaba arkadaşlar;
Bir tablom var, o tablomdan SP ile aynı isimli ürünlerin toplamını almak istiyorum. Aslında yazdığım kodla aldım ama kayıt sayısı kadar sonuç veriyor bana.
Yazdığım SP şöyle
CREATE OR ALTER PROCEDURE SPREP_GUNLUKHAREKETDETAY
RETURNS (
STSTARIH DATE,
STOKAD VARCHAR(100),
MIKTAR DECIMAL(12,6),
ACIKLAMA VARCHAR(25),
SATISFIYAT DECIMAL(12,6),
ALISFIYAT DECIMAL(12,6),
KDV DECIMAL(12,6))
AS
begin
for
select distinct(hd_stokad), hd_tarih, hd_miktar, hd_hareketturu, hd_birimfiyat, hd_alisfiyat, hd_kdv
from tbl_hareketdetay where hd_tarih='today'
into :stokad, :ststarih, :miktar, :aciklama, :satisfiyat, :alisfiyat, :kdv
do
begin
select sum(hd_miktar)
from tbl_hareketdetay where hd_stokad=:stokad and hd_tur=3
into miktar;
suspend;
end
end
dönen sonuç
burada sorunsuz bir şekilde, aynı isme sahip ürünlerin miktarının toplamını, miktar alanında alıyor. Fakat "distinct" kullanmama rağmen her kayıt için bir değer gösteriyor.
[img] [/img]
Benim olmasını istediğim
[img] [/img]
kod'a kırk takla attırdım ama sonuç alamadım. Yardımcı olursanız sevinirim.
İyi geceler
Merhabalar,
Group by STOKAD
deneyin lütfen.
Nacizane tavsiyem, Group by veya Where koşullarında direk isim kullanmayın.
ID (int) ile işlem yapmanızı öneririm. Hem hataların önüne geçmek, hem de hız kazanmak için.
Index de unutmayın...
Kolay gelsin.
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
STOKAD.
At line 20, column 9.
verdiği hata bu. SP'nin dönen değeri olduğu için sanırım.
(27-03-2020, Saat: 09:19)anemos Adlı Kullanıcıdan Alıntı: Hareket tablosunu distinct yaparak toplam almak hatalı bir kurgu gibi görünüyor. Örneğin alış veya satış fiyatının aynı olmaması durumunda, "distinct" tekrarlı sonuç döndürebilir. Sorgunuzu tekrar gözden geçirmenizi tavsiye ederim.
@ anemos hocam bu hareketdetay tablosu ve yukarıdaki kodla sadece rapor alıyorum, bu tablo üzerinde düzenleme veya ekleme yapmıyorum. Bu bilgilere göre kurgu yanlış mı? Öneriniz nedir, ne yapmalıyım?
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
Yorumları: 884
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.853 Uzman
Hocam o zaman şöyle yapmalısın;
önce for select ile distinct kullanarak sadece stok adını al, for select içinde first ile stok ile ilgili bilgileri ve altında hareket toplamlarını al.
Yorumları: 117
Konuları: 21
Kayıt Tarihi: 01-09-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 78 Başlangıç
29-03-2020, Saat: 14:58
(Son Düzenleme: 29-03-2020, Saat: 15:56, Düzenleyen: Aktolgali.)
Merhaba;
İbExpert'in sql editöründe yazdığım bir sql kodunu çalıştırdım. Aslında istediğim sonucu veriyor ama id sini verdiğim tek kayıt için veriyor. Ben bunu (benzersiz) her kayıt için yapmak istiyorum. Yardımcı olursanız sevinirim. Yani döngüye nasıl sokabilirim.
select sum(hd_miktar), hd_stokad, hd_tarih from tbl_hareketdetay
where hd_tarih='today' and hd_tur=3 and hd_barkodid=(select brk_id from tbl_barkod where brk_id=3)
group by hd_stokad, hd_tarih
SELECT sum(hd_miktar) as adet, hd_stokad, hd_tarih from tbl_hareketdetay
where hd_tarih='today' and hd_tur=3
group by hd_stokad, hd_tarih
Bu kod sql editörde çalıştırdığımda istediğim sonucu veriyor fakat aşağıdaki gibi sp içine yerleştirince derleniyor fakat 'ıırrtt' diye bir ses çıkararak hiç bir sonuç vermiyor.
CREATE OR ALTER PROCEDURE SPREP_GUNLUKHAREKETDETAY
RETURNS (
STSTARIH DATE,
STOKAD VARCHAR(100),
MIKTAR DECIMAL(12,6))
AS
begin
SELECT sum(hd_miktar) as adet, hd_stokad, hd_tarih from tbl_hareketdetay
where hd_tarih='today' and hd_tur=3
group by hd_stokad, hd_tarih
into :miktar, :stokad, :ststarih;
end
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
Yorumları: 89
Konuları: 9
Kayıt Tarihi: 14-08-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 305 Acemi
Merhaba. Yazım hatası görünüyor. Aşağıdaki begin-end aralığını aşağıdaki gibi düzenleyin.
begin
FOR
SELECT sum(hd_miktar) as adet, hd_stokad, hd_tarih from tbl_hareketdetay
where hd_tarih='today' and hd_tur=3
group by hd_stokad, hd_tarih
into :miktar, :stokad, :ststarih
DO
SUSPEND;
end
Yorumları: 117
Konuları: 21
Kayıt Tarihi: 01-09-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 78 Başlangıç
29-03-2020, Saat: 19:08
(29-03-2020, Saat: 18:34)anemos Adlı Kullanıcıdan Alıntı: Merhaba. Yazım hatası görünüyor. Aşağıdaki begin-end aralığını aşağıdaki gibi düzenleyin.
begin
FOR
SELECT sum(hd_miktar) as adet, hd_stokad, hd_tarih from tbl_hareketdetay
where hd_tarih='today' and hd_tur=3
group by hd_stokad, hd_tarih
into :miktar, :stokad, :ststarih
DO
SUSPEND;
end
@ anemos hocam çok teşekkür ederim. Koda kırk takla attırdım ama çözüm kırkbirinci takladaymış
Tekrar teşekkür ederim ilginiz için
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
|