Tayipk çok teşekkür ederim açıklaman için benim bu alanların hiçbiri birbirini tutmuyor o yüzden group by mantığını kullanamam ESTOK_KODU ve ESTOK_ADI iki alan kullanmış olsaydım sizin anlattığınız gruplama olacaktı. Peki ben nasıl bir döngü ile ve bu alanları da kullanarak bir gruplama yapabilirim çünkü bu alanları kullanmam gerekiyor. Aslında hata benim bir tane tablom var ve bunun içerisinde "ESTOK_KODU, ESTOK_ADI, ESTHAR_TARIH, EFISNO, EFIS_NO, EGCTIP, EOLCU_BR1, EBARKOD1" bu alanları saklıyor ve ben stok rehberi yaptığım da ilk ekranda group by mantığını kullanıyorum.Şöyle ;
Kod: Tümünü seç
{ESRehber.Close;
ESRehber.SQL.Clear;
ESRehber.SQL.Add('SELECT ESTOK_KODU,ESTOK_ADI FROM TBLEMANET WHERE EGCTIP='+#39+'G'+#39+' AND ECARI_KOD='+QuotedStr(Form3.DBEdit1.text));
ESRehber.SQL.Add('GROUP BY ESTOK_KODU,ESTOK_ADI');
ESRehber.Open;
ESRehber.Active:=True;
Buraya kadar herşey tamam ve DBGRid1 de çift tıkladığımda bu alanları hesaplatarak DBEditlere alıyorum sorun burda başlıyor ve bu kod yapısıda şöyle ;
Kod: Tümünü seç
procedure TForm4.DBGrid1DblClick(Sender: TObject);
begin
Form3.DBEdit8.text :=Form3.EKAYIT.fieldbyname('EFIS_NO').text;
Form3.DBEdit5.Text :=ESREHBER.fields[2].asstring;
Form3.DBEdit3.Text :=ESREHBER.fields[3].asstring;
Form3.DBEdit6.Text :=ESREHBER.fields[0].asstring;
Form3.DBEdit7.Text :=ESREHBER.fields[1].asstring;
Form3.DBEdit9.Text :=ESREHBER.fields[6].asstring;
Form3.DBEdit10.Text :=ESREHBER.fields[7].asstring;
Form3.Edit9.Text :=ESREHBER.fields[0].asstring;
////// HESAPLAMA BÖLÜMÜ //////
Form3.Filitre.close;
Form3.Filitre.sql.clear;
Form3.Filitre.sql.add('SELECT ESTOK_KODU,ESTOK_ADI,');
Form3.Filitre.sql.add('SUM(CASE WHEN EGCTIP='+#39+'G'+#39+' then ESTHAR_GCMIK else 0 end) [GTOP],');
Form3.Filitre.sql.add('SUM(CASE WHEN EGCTIP='+#39+'C'+#39+' then ESTHAR_GCMIK else 0 end) [CTOP],');
Form3.Filitre.sql.add('SUM((CASE WHEN EGCTIP='+#39+'G'+#39+' then ESTHAR_GCMIK else 0 end)-(CASE WHEN EGCTIP='+#39+'C'+#39+' then ESTHAR_GCMIK else 0 end)) [KTOP]');
Form3.Filitre.sql.add('FROM TBLEMANET WHERE ECARI_KOD='+#39+''+Form3.DBEdit1.text+''+#39+'');
Form3.Filitre.sql.add('AND ESTOK_KODU='+#39+''+Form3.DBEdit6.text+''+#39+'');
Form3.Filitre.sql.add('GROUP BY ESTOK_KODU,ESTOK_ADI');
Form3.Filitre.open;
Form3.Edit3.Text:=form3.Filitre.Fields[2].asstring;
Form3.Edit4.Text:=form3.Filitre.Fields[3].asstring;
Form3.Edit5.Text:=form3.Filitre.Fields[4].asstring;
Form4.Close;
end;
alanlar olmadığı için aktarmıyor ve hata alıyorum
"List İndex out of Bounds (2) " hatası veriyor. Bunu nasıl aşabilirim Kod da yardımcı olabilecek misiniz?