Grid Satır sayısı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Misafir

Grid Satır sayısı

Mesaj gönderen Misafir »

DB Grid de olan toplam satır sayısını nasıl alıyoruz..? Yada şöyle diyim.. DB deki verileri teker teker excel e aktaracağım....?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam.

- DBGrid'de gösterilen Table'ınızdın RecordCount'u size bu sonucu verir.

- Birden fazla DBGrid veya olay anında DBGrid Datasource değişikliği yaparak listenizi özelleştimeniz sözkonusuysa, dinamik olarak şunu deneyin.

Kod: Tümünü seç

Var
  KayitSayisi : Integer;
begin
  KayitSayisi := DBGrid1.DataSource.DataSet.RecordCount;
end;
Resim
Resim ....Resim
Misafir

Mesaj gönderen Misafir »

anladım şunu sorsam size...db deki verilerimi excel dosyasına kaydedicem...ve kullancı bu db yi excelde açıp print edecek...excel i açıyorum ama db yi nasıl aktaracağpım..bir fonksiyon ile teker teker sonrada EOF kullanarakmı ? yardımcı olurmusunuz?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Table açacaksınız
- Excel'e yolla butonuna basınca da baştan sona bir döngü ile bunları yollayacaksınız.

Örnek Kod:

Kod: Tümünü seç

// Uses'a Excel97 'yi ekleyin
Uses Excel97

Var
  xExcel : Variant;
  xRange : OleVariant;
  Sayac  : Integer;
begin
      Table1.DisableControls; // İlşlem Sırasında Table'ımız donsun

      xExcel := CreateOleObject('Excel.Application');
      xExcel.Workbooks.Add(xlWBatWorkSheet);
      xExcel.Workbooks[1].WorkSheets[1].Name := 'mcop@ada.net.tr';

      // --- Başlıklar --- //
        xExcel.Range[ 'A1','A1'].Value := 'Başlık 1'
        xExcel.Range[ 'B1','B1'].Value := 'Başlık 2'
        xExcel.Range[ 'C1','C1'].Value := 'Başlık 3'

      Sayac    := 1;
      Table1.First;
      While ( NOT Table1.EOF ) do
      begin
        Inc(Sayac);
        // --- Bilgiler --- //
        xExcel.Range[ 'A' + IntToStr(Sayac), 'A'+IntToStr(Sayac)].Value := #39 + Table1.Fields[0].AsString;
        xExcel.Range[ 'B' + IntToStr(Sayac), 'B'+IntToStr(Sayac)].Value := #39 + Table1.Fields[1].AsString;
        xExcel.Range[ 'C' + IntToStr(Sayac), 'C'+IntToStr(Sayac)].Value := #39 + Table1.Fields[2].AsString;
        Table1.Next;
        Application.ProcessMessages;
      end; // While

      xExcel.Visible := True; // Excel Gösterilir

      Table1.EnableControls; // Table1'i dondurmuştuk eski haline geld
end;
Resim
Resim ....Resim
Misafir

hata

Mesaj gönderen Misafir »

Variant does not referance an automation object htası veriyor
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

Ayrı bir yöntem önermek istiyorum.
Önce Exel i aç.
Ordan
Veri->Dışverial->Yeni Veritabanı sorgusu
Ordan veridosyalarından query yardımı ile exele aktarmak istediğin verileri sql ie seç.
daha sonra sorguyu çalıştırdığın zaman exel otomatik olarak açılıp senin verilerini gösterecekdir.
Kullandığın veritabanına göre veritabanı sorgusunun ayarlaması değişik olabilir. O kısımda biraz araştırma yapman gerkecek. Ben PAradox uygulamada yaptım. Çalıştı. Ancak office2000 ve üzeri olması gerekli. Diğerlerinde exeli açıp veritabanı sorgusunuçalıştırman gerkiyor.(el ile) 2000 ve üzerinde veritabanı sorgu dosyasını exel ile ilişkilendirip(ki default olarak ilişkilendirilmiş oluyor) sorgu dosyasını winexec komutu ile çalıştırdığın zaman exel açılıp verilerini listeliyor.
iyi çalışmalar.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Sana yoladığım satırlarda sadece noktalıvirgül hataları varmış. Şimdi Delphi olan bir makinada denedim çalışıyor. Hatta son halini Copy/Paste yapayım sana
- Uses'a bir de ComObj istiyor onu da eklersin.

Kod: Tümünü seç

// Uses'a eklenecekler....
// Uses ComObj, Excel97
procedure TForm1.Button13Click(Sender: TObject);
Var
  xExcel : Variant;
  Sayac  : Integer;
begin
  Table1.DisableControls; // İlşlem Sırasında Table'ımız donsun

  xExcel := CreateOleObject('Excel.Application');
  xExcel.Workbooks.Add(xlWBatWorkSheet);
  xExcel.Workbooks[1].WorkSheets[1].Name := 'mcop@ada.net.tr';

  // --- Başlıklar --- //
    xExcel.Range[ 'A1','A1'].Value := 'Başlık 1';
    xExcel.Range[ 'B1','B1'].Value := 'Başlık 2';
    xExcel.Range[ 'C1','C1'].Value := 'Başlık 3';

  Sayac    := 1;
  Table1.First;
  While ( NOT Table1.EOF ) do
  begin
    Inc(Sayac); 
    // --- Bilgiler --- //
    xExcel.Range[ 'A' + IntToStr(Sayac), 'A'+IntToStr(Sayac)].Value := #39 + Table1.Fields[0].AsString;
    xExcel.Range[ 'B' + IntToStr(Sayac), 'B'+IntToStr(Sayac)].Value := #39 + Table1.Fields[1].AsString;
    xExcel.Range[ 'C' + IntToStr(Sayac), 'C'+IntToStr(Sayac)].Value := #39 + Table1.Fields[2].AsString;
    Table1.Next;
    Application.ProcessMessages;
  end; // While

  xExcel.Visible := True; // Excel Gösterilir
  Table1.EnableControls; // Table1'i dondurmuştuk eski haline geld
end;
Resim
Resim ....Resim
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

selamlar bende benzer bi iş yapıyordum, db-->excel bir component buldum
http://users.pandora.be/stefancr/Compon ... xcelExport

componente dataseti bağlıyor ve satır sütun renk ayarlarını falan yapıp create yapınca kendisi hallediyor.

(ben denedim ama kullanmadım. db tablo olayından vazgeçtim )
Cevapla