delphi access 2 tablodan veri çekmek ve sum işlemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
bilprosoft
Üye
Mesajlar: 3
Kayıt: 23 Mar 2016 02:17

delphi access 2 tablodan veri çekmek ve sum işlemi

Mesaj gönderen bilprosoft »

Personel Kart ve Personel Maaş adında iki tablom var

1. tabloda personel tc, ad, soyad
2. tabloda borc, alacak, bakiye, durum bilgilerim var

yapmak istediğim 1. tablodan tc, ad, soyad 2. tablodan 1. tablodan aldığı id bilgisi ile 2. tablodaki aynı id' li kayıtları sum(toplamak) ve sonucuna göre
durum bilgisine B veya A yazdırmak

kodum şöyle - ama çalışmıyor. Şu hatayı veriyor 'Toplam bir işlevin bir parçası olarak belirtilen 'TCNo' ifadesini içermeyen bir sorguyu yürütmeyi denediniz.'

qMaasOzet.Close;
qMaasOzet.SQL.Clear;
qMaasOzet.SQL.Add('SELECT PERKART.TCNo, PERKART.Adi, PERKART.Soyadi, ');
qMaasOzet.SQL.Add('Sum(PERMAAS.Alacak) AS Alacak, Sum(PERMAAS.Borc) AS Borc, ');
qMaasOzet.SQL.Add('Sum(PERMAAS.Alacak)-Sum(PERMAAS.Borc) AS Bakiye ');
qMaasOzet.SQL.Add('IIF(Bakiye>0,'+'''A'''+','+'''B'''+') AS Durum ');
qMaasOzet.SQL.Add('FROM PERKART INNER JOIN PERMAAS ON PERKART.id=PERMAAS.Perid ');
qMaasOzet.SQL.Add('WHERE PERMAAS.Ayid=1 ');
qMaasOzet.SQL.Add('GROUP BY PERKART.id');
qMaasOzet.Open;

yani kısacası çıktı şöyle olması lazım

TCNO - ADI - SOYADI - Alacak - Borc - Bakiye - Durum
3222 gfg dfdfdf 1000 750 250 A
bilprosoft
Üye
Mesajlar: 3
Kayıt: 23 Mar 2016 02:17

Re: delphi access 2 tablodan veri çekmek ve sum işlemi

Mesaj gönderen bilprosoft »

Cevabı buldum belki birilerine faydası olur diye buraya yazmak istedim.

qMaasOzet.Close;
qMaasOzet.SQL.Clear;
qMaasOzet.SQL.Add('SELECT PERKART.TCNo, PERKART.Adi, PERKART.Soyadi, ');
qMaasOzet.SQL.Add('Sum(PERMAAS.Alacak) AS Alc, Sum(PERMAAS.Borc) AS Brc, ');
qMaasOzet.SQL.Add('IIF(ISNULL(Sum(PERMAAS.Alacak)),0,Sum(PERMAAS.Alacak))-IFF(ISNULL(Sum(PERMAAS.Borc)),0,Sum(PERMAAS.Borc)) AS Bky, ');
qMaasOzet.SQL.Add('IIF(Bky>0,''A'',''B'') AS Drm ');
qMaasOzet.SQL.Add('FROM PERKART INNER JOIN PERMAAS ON PERKART.id=PERMAAS.Perid');
qMaasOzet.SQL.Add('WHERE Harid=0' );
qMaasOzet.SQL.Add('GROUP BY PERKART.TCNo, PERKART.Adi, PERKART.Soyadi');
qMaasOzet.SQL.Add(ORDER BY Adi='AHMET');
qMaasOzet.Open;

Hatanın nedeni GROUP BY dan sonra en üstte SELECT ten sonra yazılan değerleri GROUP BY bölümünede yazmak gerekiyor. Artı olarak AS takısından sonra yazacağımız ADLAR tablodaki alan adları ile aynı olmaması lazım.
Cevapla