evet fakat ben AdoQuery1 alan adı vermedim FieldByName yani o yüzden dbgrid den çekiyorum ama döngüde var sanırım excell 1 satır atıp diğer kayıtları getirmiyor
bu kodda ise sadece Erehber datasetini Next yapıyorsun. yani şunu yapıyorsun Erehber datasetin bitene kadar sen Dbgriddeki ilk satırı almaya çalışıyorsun. bence kodlarını ve mantığı tekrar gözden geçir derim. dbgridin datasetini Erehber yap ki Next ten sonra ki kayıt aktarılabilsin.Birde dataseti bağlarsan ERehber.Next demene gerek yok çünkü işlem bittikten sonra döngü otomatik olarak bir sonraki kayda kendisi geçer. Kolay gelsin.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Aslında döngü bu şekildeydi ve başka yerlerde kullandım düzgün çalışıyor sadece 1 alanı yazdırmak istemiyorum onu yapamadım kodda değişiklik yaparak yardım eder misin?
end;
try
with ERapor do
begin
Row := 9;
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;
...
Col := 0;
for i := 0 to DBGrid1.FieldCount - 1 do
if i <> 3 then // Buradaki 3'ün anlamı yazdırılmayacak olan sütun nosu,
// 0'dan başlayarak DBGrid'teki sütün numarası, yani görünüşte 4. sütun oluyor.
begin
Inc(Col);
Sheet.Cells[Row, Col].Value := DBGrid1.Fields[i].Value;
if Col >= 3 then
Sheet.Cells[Row, Col].NumberFormat := '0_ ;-0';
end;
...
except
ShowMessage('Excel başlatılamıyor.'); Exit;
end;
try
with ERehber do
begin
Row := 3; // başlangıç 3. satır
First;
While not Eof do
begin
Col := 0;
for i := 0 to DBGrid1.FieldCount - 1 do
if i <> 3 then // Buradaki 3'ün anlamı yazdırılmayacak olan sütun nosu,
// 0'dan başlayarak DBGrid'teki sütün numarası, yani görünüşte 4. sütun oluyor.
begin
Inc(Col);
Sheet.Cells[Row, Col].Value := DBGrid1.Fields[i].Value;
if Col >= 3 then
Sheet.Cells[Row, Col].NumberFormat := '0_ ;-0';
end;
end;
Next;
Inc(Row); // Row := Row + 1;
end;
finally
Sheet.Columns['A:F'].EntireColumn.AutoFit;
ExcelApp.Visible := True;
ExcelApp := Null; WBook := Null; Sheet := Null;
end;
end;
End;