excel gondermede hata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

excel gondermede hata

Mesaj gönderen Vital »

Merhaba arkadaslar,
db den excel e gonderirken asagidaki kodu kullaniyorum fakat db nin tamamini gondermiyor.45 satir gonderiyor acaba nerde yanlis yapiyorum.

var
xDS: TDataSet;
xls, wb, ws, vv: variant;
i, j: integer;
fName: string;
fDosya: textfile;
begin
SaveDialog1.Execute;
xls := CreateOleObject('Excel.Sheet');
wb := xls.Application.WorkBooks.Add;
ws := wb.Sheets.Add;
ibQuery1.DisableControls;
ibQuery1.First;
for i := 1 to ibQuery1.RecordCountdo
begin
for j := 1 to ibQuery1.Fields.Count do
begin
if i = 1 then // ilk satır alan adları için.
ws.Cells(i, j) := ibQuery1.Fields.Fields[j - 1].FieldName;
vv := ibQuery1.Fields.Fields[j - 1].Value;
ws.Cells(i + 1, j) := vv;
end;
ibQuery1.Next;
end;
ibQuery1.EnableControls;
wb.SaveAs(savedialog1.FileName);

tskler.
Garibanus
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: excel gondermede hata

Mesaj gönderen Vital »

arkadaslar tuhaf bir sey daha grid uzerine tıklarsanız tamamını alıyor.
Garibanus
khanco
Üye
Mesajlar: 226
Kayıt: 01 Eki 2007 04:39
Konum: İzmir
İletişim:

Re: excel gondermede hata

Mesaj gönderen khanco »

Gridin oncilick eventlerinden birinde kod yazılımı?
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: excel gondermede hata

Mesaj gönderen Vital »

hayir herhangi bir sey yazili degil .
Garibanus
mehmetcan
Üye
Mesajlar: 63
Kayıt: 14 Tem 2008 05:19

Re: excel gondermede hata

Mesaj gönderen mehmetcan »

ibquery1.first ten önce ibquery1.fetchall yap.

Bazen kayıtların tamamını almayıp, gereken kadarını alıyor. Bu durumda da recordcount gerçek kayıt bilgisini yansıtmıyor, fetchall yapınca tüm kayıtlar sunucudan alınıyor.
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: excel gondermede hata

Mesaj gönderen Vital »

arkadaslar ilginize tskler yontemi degistirerek olayi cozdum

procedure TForm1.Button1Click(Sender: TObject);
var
Rng : TOpExcelRange;
begin
OpExcel1.Connected := True;
OpExcel1.Visible := True;
OpExcel1.WindowState:=xlwsMaximized;
IBQuery1.Active:=true;
NewBook:=OpExcel1.Workbooks.Add;
Rng := OpExcel1.Workbooks[0].Worksheets[0].Ranges.Add;
Rng.Name := 'bambam'; Rng.Address := 'A1';
Rng.OfficeModel :=OpDataSetModel1;

OpDataSetModel1.Dataset :=IBQuery1;
OpExcel1.RangeByName[bambam].Populate;
OpExcel1.Workbooks[0].Worksheets[0].Activate;
Rng.AsRange.Columns.AutoFit;
IBQuery1.Active:=false;
end;
Garibanus
Cevapla