procedure TForm12.BitBtn3Click(Sender: TObject);
begin
NRapor1H.Close;
NRapor1H.SQL.Clear;
NRapor1H.SQL.Add('SELECT Sum(BRUTTUTAR) as BRUT_TUTAR,Sum(SAT_ISKT) as SATIR_ISK_TOP,'+
'Sum(GEN_ISK1T+GEN_ISK2T+GEN_ISK3T) AS GENEL_ISK_TOP,'+
'sum( CASE WHEN STHAR_KDV=''1'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END ) AS KDV_1,'+
'sum( CASE WHEN STHAR_KDV=''8'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END) AS KDV_8,'+
'sum( CASE WHEN STHAR_KDV=''18'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END) AS KDV_18,'+
'Sum(GENELTOPLAM) as GENELTOPLAM FROM TBLFATUIRS,TBLSTHAR WHERE FTIRSIP=''1'' AND Tarih between :pTarih1 and :pTarih2 ');
// 'INNER JOIN TBLSTHAR ON (TBLFATUIRS.CARI_KODU = TBLSTHAR.STHAR_ACIKLAMA AND TBLFATUIRS.FATIRS_NO = TBLSTHAR.FISNO),'+
// 'INNER JOIN TBLCASABIT ON (TBLCASABIT.CARI_KOD = TBLFATUIRS.CARI_KODU)';
NRapor1H.Parameters.ParamByName('pTarih1').Value := DateTimePicker1.Date;
NRapor1H.Parameters.ParamByName('pTarih2').Value := DateTimePicker2.Date;
NRapor1H.Open;
Edit1.Text:=NRapor1H.Fields[0].AsString;
end;
Herkesin Miraç Kandilini Kutluyorum Allah hayırlara vesile etsin .
Sorguyu şu şekilde değiştirdim ve "Sorgu zaman aşımı süresi doldu" sorununu aştım fakat şimdi istediğim sonuçları alamıyorum yanlış sonuç veriyor acaba nerde hata yaptım bakabilir misiniz?
NRapor1H.Close;
NRapor1H.SQL.Clear;
NRapor1H.SQL.Text:='SELECT Sum(BRUTTUTAR) AS BRUT_TUTAR, Sum(SAT_ISKT) AS SATIR_ISK_TOP,'+
'Sum(GEN_ISK1T+GEN_ISK2T+GEN_ISK3T) AS GENEL_ISK_TOP, Sum(GENELTOPLAM) as GENELTOPLAM,'+
'sum(CASE WHEN STHAR_KDV=''1'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END ) AS KDV_1, '+
'Sum(CASE WHEN STHAR_KDV=''8'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END) AS KDV_8, ' +
'Sum(CASE WHEN STHAR_KDV=''18'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END) AS KDV_18 ' +
'FROM TBLFATUIRS,TBLSTHAR WHERE FTIRSIP=''1'' AND Tarih between :pTarih1 and :pTarih2';
NRapor1H.Parameters.ParamByName('pTarih1').Value := DateTimePicker1.Date;
NRapor1H.Parameters.ParamByName('pTarih2').Value := DateTimePicker2.Date;
NRapor1H.Open;
Edit1.Text:=NRapor1H.FieldByName('KDV_1').AsString;
Edit2.Text:=NRapor1H.FieldByName('KDV_8').AsString;
Edit3.Text:=NRapor1H.FieldByName('KDV_18').AsString;
Edit4.Text:=NRapor1H.FieldByName('BRUT_TUTAR').AsString;
Edit5.Text:=NRapor1H.FieldByName('SATIR_ISK_TOP').AsString;
Edit6.Text:=NRapor1H.FieldByName('GENEL_ISK_TOP').AsString;
Edit7.Text:=NRapor1H.FieldByName('GENELTOPLAM').AsString;
end;
Sum(GEN_ISK1T+GEN_ISK2T+GEN_ISK3T) böyle kullanmak yerine her birine ayrı ayrı sum() kullan,
Edit6.Text:=FormatFloat( NRapor1H.FieldByName('GEN_ISK1T').AsFloat + NRapor1H.FieldByName('GEN_ISK2T').AsFloat + .....);
sum(CASE WHEN STHAR_KDV=''1'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END ) AS KDV_1, fir kdv diye field ekle ve bu hesaplamayı ister bir trigger la ister delphi tarafında bir kez hesaplattırım table a ekle, sonra sadece sum al.
field ların null olmasın, ve sum alacağın alanlarada index ver
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak... Zoru başarırım, İmkansız zaman alır FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Arkadaşlar;
Ben kodu şu şekilde yaptığımda doğru sonucu alıyorum fakat satış olarak tabloda "J" tutuluyor ve benim "J" leri süzdürmem gerekiyor STHAR_HTUR=''J'' eklediğimde ise sonuç ilk listelenin toplamını veriyor
Doğru çalışan ;
NRapor1H.SQL.Text:='SELECT sum(CASE WHEN STHAR_KDV=''1'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END ) AS KDV1 ,' +
'Sum(CASE WHEN STHAR_KDV=''8'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END) AS KDV8, ' +
'Sum(CASE WHEN STHAR_KDV=''18'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END) AS KDV18 ' +
'FROM TBLSTHAR WHERE STHAR_TARIH between :pTarih1 and :pTarih2';
NRapor1H.SQL.Text:='SELECT sum(CASE WHEN STHAR_KDV=''1'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END ) AS KDV1 ,' +
'Sum(CASE WHEN STHAR_KDV=''8'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END) AS KDV8, ' +
'Sum(CASE WHEN STHAR_KDV=''18'' THEN (STHAR_NF*STHAR_KDV*STHAR_GCMIK)/100 ELSE 0 END) AS KDV18 ' +
'FROM TBLSTHAR WHERE STHAR_HTUR=''J'' AND STHAR_TARIH between :pTarih1 and :pTarih2';