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
delphi access 2 tablodan veri çekmek ve sum işlemi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 3
- Kayıt: 23 Mar 2016 02:17
-
- Üye
- Mesajlar: 3
- Kayıt: 23 Mar 2016 02:17
Re: delphi access 2 tablodan veri çekmek ve sum işlemi
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.
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.