Raporumda birçok cari ve stok var şu şekilde bir rapor yapmak istedim;
Bir cari ve onun stok hareketleri bittiğinde diğer cari ve onun hareketleri şeklinde.
CARİ
ADRES
TELEFON
STOK KODU - STOK ADI - GİRİŞ TARİHİ - ÇIKIŞ TARİHİ
...
...
...
....
CARİ
ADRES
TELEFON
STOK KODU - STOK ADI - GİRİŞ TARİHİ - ÇIKIŞ TARİHİ
...
..
..
..
..
..
CARİ
ADRES
TELEFON
STOK KODU - STOK ADI - GİRİŞ TARİHİ - ÇIKIŞ TARİHİ
Her carinin hareketlerini altına yazdırıp cari değiştiğinde ona ait hareketleri excel rapor etmek istiyorum.
Normal de excel şu şekilde 1 tek carinin raporunu alıyorum. Bu kod üzerinde değişiklik yapabilir miyiz ?
Kod: Tümünü seç
procedure TForm5.BitBtn3Click(Sender: TObject);
var ExcelApp, WBook, Sheet: OleVariant;
Row, Col: Integer; // satır ve sütün için değişken
begin
If Edit1.Text='' Then
Begin
Application.MessageBox('Boş Kayıt Excel gönderilemez !!! ','Uyarı Mesajı',MB_ICONERROR);
End
Else
Begin
if ADOQuery1.IsEmpty then Exit; // Çıkış
try
ExcelApp := CreateOleObject('Excel.Application');
WBook := ExcelApp.WorkBooks.Add;
Sheet := WBook.WorkSheets[1];
Sheet.Range['A1','F1'].Merge;
Sheet.Range['A1','F1'].Font.Bold:=True;
Sheet.Range['A1','F6'].Font.Color:=clRed;
Sheet.Cells[1,1].Value:='Emanet Cari Stok Raporlama';
Sheet.Cells[1,1].HorizontalAlignment := -4108;
Sheet.Cells[1,1].Font.Size := 20;
Sheet.Cells[2,1].Value:='Cari Kod';
Sheet.Cells[3,1].Value:='Cari İsim';
Sheet.Cells[4,1].Value:='Cari Adres';
Sheet.Cells[5,1].Value:='Vergi Dairesi';
Sheet.Cells[6,1].Value:='Vergi No';
Sheet.Cells[7,1].Value:='Stok Kodu';
Sheet.Cells[7,2].Value:='Stok İsmi';
Sheet.Cells[7,3].Value:='Toplam Giriş';
Sheet.Cells[7,4].Value:='Toplam Çıkış';
Sheet.Cells[7,5].Value:='Toplam Kalan';
Sheet.Cells[7,6].Value:='Ölçü Birimi';
Sheet.Range['A2','F7'].Font.Bold:=True;
Sheet.Range['A2','F7'].Font.Color:=clRed;
ADOQuery2.close;
ADOQuery2.sql.clear;
ADOQuery2.sql.add('SELECT * FROM TBLCASABIT where CARI_KOD='+#39+''+edit1.text+''+#39+'');
ADOQuery2.open;
Sheet.Cells[2,2].Value:='''' + Edit1.Text;
Sheet.Cells[3,2].Value:='''' + Edit2.Text;
Sheet.Cells[4,2].Value:='''' + adoquery2.Fields[14].asstring;
Sheet.Cells[5,2].Value:='''' + adoquery2.Fields[16].asstring;
Sheet.Cells[6,2].Value:='''' + adoquery2.Fields[17].asstring;
except
ShowMessage('Excel başlatılamıyor.'); Exit;
end;
try
with ADOQuery1 do
begin
Row := 8; // başlangıç 3. satır
First;
While not Eof do
begin
for Col := 0 to DBGrid1.FieldCount - 1 do
begin
Sheet.Cells[Row, Col + 1].Value := DBGrid1.Fields[Col].Value;
if Col + 1 >= 3 then
Sheet.Cells[Row, Col + 1].NumberFormat := '0_ ;-0';
end;
Next;
Inc(Row); // Row := Row + 1;
end;
end;
finally
Sheet.Columns['A:F'].EntireColumn.AutoFit;
ExcelApp.Visible := True;
ExcelApp := Null; WBook := Null; Sheet := Null;
end;
end;
end;