Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
DbGrid To Excel & DataSet To Excel
#11
Hatayı söylemeden insanların size yardımcı olması zor. Bir dahaki sefere aldığınız hata mesajını da paylaşın. Şimdilik ise public kısmını silin. Muhtemelen eski bir Delphi sürümü kullanıyorsunuz.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#12
(03-05-2020, Saat: 01:14)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Hatayı söylemeden insanların size yardımcı olması zor. Bir dahaki sefere aldığınız hata mesajını da paylaşın. Şimdilik ise public kısmını silin. Muhtemelen eski bir Delphi sürümü kullanıyorsunuz.


[Error] TumKartUnit.pas(13): ',' or ':' expected but identifier 'Baslangic' found
Hata bu uyarınız için teşekkürler.
Cevapla
#13
Merhaba,
Baslangic değişkeninin bulunduğu bloktaki satırların birinde (IDE'nin alt kısmında açılan pencerede bu hataya çift tıklarsanız, hatanın bulunduğu satıra odaklanırsınız), : (iki nokta üst üste) veya , (virgül) karakteri eksik.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#14
(03-05-2020, Saat: 15:48)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Baslangic değişkeninin bulunduğu bloktaki satırların birinde (IDE'nin alt kısmında açılan pencerede bu hataya çift tıklarsanız, hatanın bulunduğu satıra odaklanırsınız), : (iki nokta üst üste) veya , (virgül) karakteri eksik.

Hocam, kendi projeme bu kodları kopyaladım type ve procedurelari bu hataları verdi;

BNgWCl.jpg

Public ve private'nin sağına virgül ekledim ilk üç hata gitti fakat diğer hatalar procedure hatası onun sebebi nedir delphide yeniyim projede zaten varsayılan type var acaba ondanmı kaynaklanıyor ? teşekkürler
Cevapla
#15
(03-05-2020, Saat: 19:08)streamworld Adlı Kullanıcıdan Alıntı:
(03-05-2020, Saat: 15:48)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Baslangic değişkeninin bulunduğu bloktaki satırların birinde (IDE'nin alt kısmında açılan pencerede bu hataya çift tıklarsanız, hatanın bulunduğu satıra odaklanırsınız), : (iki nokta üst üste) veya , (virgül) karakteri eksik.

Hocam, kendi projeme bu kodları kopyaladım type ve procedurelari bu hataları verdi;

BNgWCl.jpg

Public ve private'nin sağına virgül ekledim ilk üç hata gitti fakat diğer hatalar procedure hatası onun sebebi nedir delphide yeniyim projede zaten varsayılan type var acaba ondanmı kaynaklanıyor ? teşekkürler
Selamlar

Ben de DBgrid ten excele aktarım yaparım genelde. Aşağıdaki kodu kendime göre düzenleyip kullanırım her zaman.
procedure Tfrmmain.Button1Click(Sender: TObject);
var
   v,sayfa:variant;{v excel prg, sayfa calisma sayfasi}
   say,i:integer;
begin
 say:=query1.recordcount;//query kayit sayisi
 v:=createoleobject('excel.application');//exceli yarat
 v.workbooks.add;//yeni calisma kitabini ekle
 sayfa:=v.workbooks[1].worksheets[1];{Birinci calisma sayfasini sayfa degiskenine ata}
 dm.query1.first;
 sayfa.cells[1,1]:='DEPO 1 KIRICI RAPORU';
 sayfa.cells[2,1]:='Tarih';
 sayfa.cells[2,2]:='Depo No';
 sayfa.cells[2,3]:='ton';
 for i:=1 to say do
 begin
   sayfa.cells[i+2,1]:=dm.query1.FieldByName('tarih').text;
   sayfa.cells[i+2,2]:=dm.query1.FieldByName('depono').text;
   sayfa.cells[i+2,3]:=dm.query1.FieldByName('ton').value;
   dm.query1.next;
 end;
 v.visible:=true;//Exceli acip verileri goster
 sayfa.Columns.AutoFit;// kolonları otomatik genişletir...
end;
Cevapla
#16
(03-05-2020, Saat: 19:22)wiseman Adlı Kullanıcıdan Alıntı:
(03-05-2020, Saat: 19:08)streamworld Adlı Kullanıcıdan Alıntı: Hocam, kendi projeme bu kodları kopyaladım type ve procedurelari bu hataları verdi;

BNgWCl.jpg

Public ve private'nin sağına virgül ekledim ilk üç hata gitti fakat diğer hatalar procedure hatası onun sebebi nedir delphide yeniyim projede zaten varsayılan type var acaba ondanmı kaynaklanıyor ? teşekkürler
Selamlar

Ben de DBgrid ten excele aktarım yaparım genelde. Aşağıdaki kodu kendime göre düzenleyip kullanırım her zaman.
procedure Tfrmmain.Button1Click(Sender: TObject);
var
   v,sayfa:variant;{v excel prg, sayfa calisma sayfasi}
   say,i:integer;
begin
 say:=query1.recordcount;//query kayit sayisi
 v:=createoleobject('excel.application');//exceli yarat
 v.workbooks.add;//yeni calisma kitabini ekle
 sayfa:=v.workbooks[1].worksheets[1];{Birinci calisma sayfasini sayfa degiskenine ata}
 dm.query1.first;
 sayfa.cells[1,1]:='DEPO 1 KIRICI RAPORU';
 sayfa.cells[2,1]:='Tarih';
 sayfa.cells[2,2]:='Depo No';
 sayfa.cells[2,3]:='ton';
 for i:=1 to say do
 begin
   sayfa.cells[i+2,1]:=dm.query1.FieldByName('tarih').text;
   sayfa.cells[i+2,2]:=dm.query1.FieldByName('depono').text;
   sayfa.cells[i+2,3]:=dm.query1.FieldByName('ton').value;
   dm.query1.next;
 end;
 v.visible:=true;//Exceli acip verileri goster
 sayfa.Columns.AutoFit;// kolonları otomatik genişletir...
end;

Dostum düşüncen için çok teşekkür ederim bu şekilde yaptım fakat veritabanımda 4000 tane kayıt olunca çok fazla zaman harcıyor aktarması. Farklı yöntemler ararken bu konuyu gördüm deniyim derken böyle karşılaştım şimdide hatanın sebebini arıyorum hatanın sebebini öğrensem kafi  Smile
Cevapla
#17
(03-05-2020, Saat: 19:08)streamworld Adlı Kullanıcıdan Alıntı:
(03-05-2020, Saat: 15:48)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Baslangic değişkeninin bulunduğu bloktaki satırların birinde (IDE'nin alt kısmında açılan pencerede bu hataya çift tıklarsanız, hatanın bulunduğu satıra odaklanırsınız), : (iki nokta üst üste) veya , (virgül) karakteri eksik.

Hocam, kendi projeme bu kodları kopyaladım type ve procedurelari bu hataları verdi;

BNgWCl.jpg

Public ve private'nin sağına virgül ekledim ilk üç hata gitti fakat diğer hatalar procedure hatası onun sebebi nedir delphide yeniyim projede zaten varsayılan type var acaba ondanmı kaynaklanıyor ? teşekkürler

Burada gördüğün hataların hepsinin sebebi aynı.
Yazım (syntax) hataları. Basit noktalı virgül, begin in end ile tamamlanması, implementation tamamlanmamış olması vb.
Uygulama yazmak için öncelikle syntax bilmek gerekiyor.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#18
(03-05-2020, Saat: 21:18)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(03-05-2020, Saat: 19:08)streamworld Adlı Kullanıcıdan Alıntı: Hocam, kendi projeme bu kodları kopyaladım type ve procedurelari bu hataları verdi;

BNgWCl.jpg

Public ve private'nin sağına virgül ekledim ilk üç hata gitti fakat diğer hatalar procedure hatası onun sebebi nedir delphide yeniyim projede zaten varsayılan type var acaba ondanmı kaynaklanıyor ? teşekkürler

Burada gördüğün hataların hepsinin sebebi aynı.
Yazım (syntax) hataları. Basit noktalı virgül, begin in end ile tamamlanması, implementation tamamlanmamış olması vb.
Uygulama yazmak için öncelikle syntax bilmek gerekiyor.

Teşekkürler
Cevapla
#19
(27-02-2017, Saat: 15:54)yhackup Adlı Kullanıcıdan Alıntı: DBGrid'i Excele aktarmam gerekti yapmışken buraya da atayım dedim. İhtiyacı olan kullansın, var ise hatam veya daha kolay yolu yordamı yorum ile bildirirseniz sevinirim.

unit DbGridToExcel;

interface

uses
  comobj, Vcl.DBGrids, Data.DB, System.SysUtils;

type
  TAutoFit = record
  public
    Baslangic: String;
    Bitis: String;
  end;

type
  TExcel = record
  private
  public
    WorkSheetsName: String;
    Folder: String;
    AutoFit: TAutoFit;
    Bold: String;
    procedure ExcExport(Grid: TDBGrid);
    procedure ExcExportDs(Data: TDataset);
  end;

implementation

procedure TExcel.ExcExport(Grid: TDBGrid);
var
  Excel, Workbook, Sheet: Variant;
  i, a: integer;
begin
  Excel := CreateOleObject('EXCEL.APPLICATION');
  Workbook := Excel.workbooks.Add;
  Sheet := Workbook.worksheets[1];
  Grid.DataSource.DataSet.First;
  for i := 1 to Grid.Columns.Count do
  begin
    Sheet.cells[1, i] := Grid.Columns[i - 1].FieldName;
  end;
  for I := 2 to Grid.DataSource.DataSet.RecordCount + 1 do
  begin
    for a := 0 to Grid.Columns.Count - 1 do
    begin
      Sheet.cells[i, a + 1] := Grid.DataSource.DataSet.Fields[a].AsString;
    end;
    Grid.DataSource.DataSet.Next;
  end;
  if (Bold <> '') then
    Excel.Range[Bold].Font.Bold := True;
  if (Trim(AutoFit.Baslangic) <> '') and (Trim(AutoFit.Bitis) <> '') then
    Excel.Range[AutoFit.Baslangic, AutoFit.Bitis].EntireColumn.AutoFit;
  if WorkSheetsName <> '' then
    Excel.workbooks[1].worksheets[1].Name := WorkSheetsName
  else
    Excel.workbooks[1].worksheets[1].Name := 'yhackup';
  if Folder <> '' then
    Excel.ActiveWorkBook.SaveAs(Folder);
  Excel.visible := True;
end;

procedure TExcel.ExcExportDs(Data: TDataset);
var
  Excel, Workbook, Sheet: Variant;
  i, a: integer;
begin
  Excel := CreateOleObject('EXCEL.APPLICATION');
  Workbook := Excel.workbooks.Add;
  Sheet := Workbook.worksheets[1];
  Data.First;
  for i := 1 to Data.FieldCount do
  begin
    Sheet.cells[1, i] := Data.Fields[i - 1].FieldName;
  end;
  for I := 2 to Data.RecordCount + 1 do
  begin
    for a := 0 to Data.FieldCount - 1 do
    begin
      Sheet.cells[i, a + 1] := Data.Fields[a].AsString;
    end;
    Data.Next;
  end;

  if (Bold <> '') then
    Excel.Range[Bold].Font.Bold := True;
  if (Trim(AutoFit.Baslangic) <> '') and (Trim(AutoFit.Bitis) <> '') then
    Excel.Range[AutoFit.Baslangic, AutoFit.Bitis].EntireColumn.AutoFit;
  if WorkSheetsName <> '' then
    Excel.workbooks[1].worksheets[1].Name := WorkSheetsName
  else
    Excel.workbooks[1].worksheets[1].Name := 'yhackup';

  if Folder <> '' then
    Excel.ActiveWorkBook.SaveAs(Folder);
  Excel.visible := True;
end;

end.



Kullanımı Da bu şekilde;
var
ex:TExcel;
begin
 ex.WorkSheetsName := 'deneme';   // Zorunlu Değil
 ex.Folder := 'C:\Users\Yakup\Desktop\Excel-1.xls';   // Zorunlu Değil
 ex.AutoFit.Baslangic := 'A1';   // Zorunlu Değil
 ex.AutoFit.Bitis := 'Z1';   // Zorunlu Değil
 ex.Bold := 'A1:H1';   // Zorunlu Değil

 ex.ExcExportDs(Form9.DBGrid1.DataSource.DataSet);
 // ex.ExcExport(Form9.DBGrid1);
end;

Merhaba, paylaşım için öncelikle teşekkürler.

öncelikli sorum şu: bir sorgulama yapıyorum ve sorgu sonucunu dbgrid e alıyorum ve excel e kaydediyorum buraya kadar okey.

Sonra bir sorgulama daha yapıyorum ve yine dbgrid e gelen yeni verileri daha önce kaydettiğim excel dosyasının altına kaydetmek istiyorum bunu nasıl yapabilirim?

veya; dbgridden aldığım ilk verilerin kaydedildiği excel dosyasına, yine dbgrid e gelen yeni sorgulamadaki verilerin altına yani aynı çalışma kitabına farklı sekme olarak nasıl ekleyebilirim?
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Pdf dosyayı Excel'e aktarmak hbulus 6 224 16-09-2020, Saat: 21:28
Son Yorum: resatarikan
  DbGrid Satır renklendirmede sütun seçimi delphicim 1 151 06-09-2020, Saat: 09:28
Son Yorum: mrmarman
  Dataset de Edit veya İnsert hatası guvenlik 4 425 12-08-2020, Saat: 09:27
Son Yorum: DelphiCan
  PDF-WORD-EXCEL Binary olarak kaydetme ve geri okuma hk MugenPower 5 754 10-08-2020, Saat: 00:45
Son Yorum: Bay_Y
  Excel import yapma (Güncelleme) cinarbil 2 406 28-07-2020, Saat: 17:39
Son Yorum: cinarbil



Konuyu Okuyanlar: 1 Ziyaretçi