Ferrari Hızında Excel e veri gönderme

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Kod: Tümünü seç

r.rdb$field_name 
Sorgularında sanırım sadece field isimlerini aktarmışsın.
query tekrar değiştirerek verileri aktarmayı dene.

burayı da bir döngü içine al istersen çünkü N>3 için bir sefer ekleme yapacak.

Kod: Tümünü seç

 if n > 3  then 
    Excel.Workbooks[1].WorkSheets.add; 
    Excel.Workbooks[1].WorkSheets[n].Name := dbsq.FieldByName('rdb$relation_name').asstring; 
    Excel.ActiveSheet.paste;
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
emrahgs
Üye
Mesajlar: 114
Kayıt: 08 Tem 2008 06:25
Konum: Antalya

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen emrahgs »

Arkadaşlar
dediğiniz gibi bi örnek yapıp denedim
gerçekten hız konusunda süper
ben kendi yaptığım bir fonksiyonu kullanıyorrum
bunu kullanmamın sebebi verileri excele atarken şekillendirmem,
gruplama yapmam (Fast report gibi)
sizin önerdiğiniz yöntemde bunları yapılabilirmi
mesala başlıkların fontu kalın
rengi değişik gibi
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen conari »

hücre adreslerini refeerans vererek istediğn biçimlendirmeyi yapabilirsin.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
emrahgs
Üye
Mesajlar: 114
Kayıt: 08 Tem 2008 06:25
Konum: Antalya

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen emrahgs »

dostum saol ama tam nasıl yapacağımı anlayamadım
bi örnek verebilirmisin
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen conari »

Kod: Tümünü seç

      excel.range['D1:K100'].NumberFormat := '#.##,00';
          excel.Range['D'+inttostr(z)+'',''+ 'K'+inttostr(z)+''].Formula := '=Sum(D'+inttostr(2)+':D'+inttostr(z-1)+')';
          excel.range['A1:K1'].Font.Color      := CLRED;
          excel.range['A1:K1'].Font.Bold       := True;
          excel.range['A1','K100'].EntireColumn.AutoFit;
          excel.range['A2'].select;
          excel.ActiveWindow.FreezePanes      := True ;
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
memoli79
Üye
Mesajlar: 29
Kayıt: 05 Nis 2007 01:29

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen memoli79 »

Merhabalar;

husonet arkadaşımızın kodunu kullandım gayet güzel çalışıyor fakat Excel'e başlıklar gelmiyor bunun için ne yapmalıyız
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen conari »

başlıkları döngü ile, veya biliyorsanız direk siz yacaksınız.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen barutali »

hocalarım affınıza sığınarak bişey sormak istiyorum ...
excel 2003 de 65000 (65000 küsur bi sayıydı .. ) satır ve üstünü clipboard kabul etmiyor .. bu durumda 70000 kayıtta bu kod çakmazmı ?
aslında sorun excel mi yoksa XP SP3 ün clipboardımı bilmiyorum ama Access ta 100.000 satırlık bir veriyi excel 2003 e yapıştırmaya çalıştığımda 65000 küsur tanesini sadece yapıştırabilceğimi söylemişti..
amatör küme programcı :D
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen conari »

65.536 satırdır.
eğer bu satırı artırmak istiyorsanız,
activeX lerde SpreadSheet 11 . kullanabilirsiniz. 262.144 satırınız olur. :wink:
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen barutali »

teşekkürler @Conari hocam
peki bu 262.144 satır yükseltilebilir mi ?
amatör küme programcı :D
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen conari »

11 Versiyonundan sonra belki olur. şuan son limit bu.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
gercek_16
Üye
Mesajlar: 108
Kayıt: 19 Haz 2005 02:42
Konum: mersin

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen gercek_16 »

bu satıra geldiğinde

Kod: Tümünü seç

          Excel.ActiveSheet.paste;
worksheet sınıfının paste yöntemi başarısız

hatası veriyor
exceli açıyor ama paste yapamıyor, neden olabilir acaba.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen vkamadan »

merhaba excel 2007 de bende aynı hatayı alıyorum sanıırm excel 2007 de farklı bir ole komudu kullanmak gerekiyor fakat önceki versiyonlarda sorun yok.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
baypipox
Üye
Mesajlar: 122
Kayıt: 16 Eki 2006 04:23
İletişim:

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen baypipox »

Arkadaşlar bu sorun benimde yanlış hatırlamıyosam başıma gelmişti, ama nasıl çözdüğümü hatırlamıyom, koda baktım pastespecial felan demişim, projeyi önceden yaptığım için şuan kodları pek hatırlamıyorum ama sizi excel yazdırdığım proceduru gönderiyorum umarım işinize yarar... Hem yukarda başka arkadaşlar başlıklarla ilgili sorunu yazmış unuda kodumdan nasıl yaptığımı anlayabilir.. Bu koduda hüseyin abinin konunun başında verdiği kodu kullanarak yaptım. Hüseyin abiye tekrar teşekkürler onun sayesinde excel e hızlı bir veri aktarımı yaptım...

Kod: Tümünü seç

procedure TFMainform.ExcellSubeleriYaz;
var
adet:integer;
//geneltoplam:ingeter;
const
ilksatir=2;
ilksutun=7;

begin
  ////Başlık yaz
  hucre1:='A'+inttostr(1);
  hucre2:='Z'+inttostr(1);
  xsayfa.range[hucre1,hucre2].mergecells:=true;
  xsayfa.range[hucre1,hucre2].borders[1].linestyle:=1;
  xsayfa.range[hucre1,hucre2].borders[2].linestyle:=1;
  xsayfa.range[hucre1,hucre2].borders[3].linestyle:=1;
  xsayfa.range[hucre1,hucre2].borders[4].linestyle:=1;
  xsayfa.cells[1,1]:='Zimmet Detay Raporu';
  xsayfa.cells[1,1].HorizontalAlignment := xlCenter;
  xsayfa.cells[1,1].font.size:=15;
  xsayfa.cells[1,1].font.bold:=true;
  xsayfa.cells[1,1].RowHeight:=22;

  ///Subeleri Yaz


  dm.IBDsetsubeler.First;
  sira:=1;
  control:=0;
liste := TStringList.Create;
liste1:= TStringList.Create;
liste2:= TStringList.Create;
liste3:= TStringList.Create;
liste4:= TStringList.Create;
liste5:= TStringList.Create;

  while not dm.IBDsetsubeler.Eof do
  begin
     hucre1:='H'+inttostr(2);
     hucre2:='Z'+inttostr(2);
     xsayfa.range[hucre1,hucre2].borders[1].linestyle:=1;
     xsayfa.range[hucre1,hucre2].borders[2].linestyle:=1;
     xsayfa.range[hucre1,hucre2].borders[3].linestyle:=1;
     xsayfa.range[hucre1,hucre2].borders[4].linestyle:=1;
     xsayfa.cells[ilksatir,ilksutun+dm.IBDsetsubeler.RecNo]:=dm.IBDsetsubelerSUBE_ADI.AsString;
     xsayfa.cells[1,1].HorizontalAlignment := xlCenter;
     xsayfa.cells[1,1].font.size:=15;
     xsayfa.cells[1,1].font.bold:=true;
     xsayfa.range[hucre1,hucre2].RowHeight:=60;
     xsayfa.range[hucre1,hucre2].ColumnWidth:=2.5;
     xsayfa.range[hucre1,hucre2].HorizontalAlignment := xlGeneral;
     xsayfa.range[hucre1,hucre2].VerticalAlignment := xlBottom;
     xsayfa.range[hucre1,hucre2].WrapText := False;
     xsayfa.range[hucre1,hucre2].Orientation := 90;
     xsayfa.range[hucre1,hucre2].AddIndent := False;
     xsayfa.range[hucre1,hucre2].IndentLevel := 0;
     xsayfa.range[hucre1,hucre2].ShrinkToFit := False;
     xsayfa.range[hucre1,hucre2].ReadingOrder := xlContext;
     xsayfa.range[hucre1,hucre2].MergeCells := False;



         dm.IBDsetStoklar.First;

         while not dm.IBDsetStoklar.Eof do
           begin
           //FrmWaitCreate(dm.IBDsetStoklarSTOK_ADI.AsString);
             dm.IBQ.Close;
             dm.IBQ.SQL.Clear;
             dm.IBQ.SQL.Add('select z.stok_id,z.ver_adet,z.sube_id from zimmetler z');
             dm.IBQ.SQL.Add('where z.stok_id like'+#39+'%'+dm.IBDsetStoklarID.AsString+'%'+#39);
             dm.IBQ.SQL.Add('and z.sube_id like'+#39+'%'+dm.IBDsetsubelerID.AsString+'%'+#39);
             dm.IBQ.Open;
             adet:=dm.ibq.Fields[1].AsInteger;
             str := IntToStr(adet);
             liste.Add(str);
             str := '';

             if control=0 then
             begin

               str1 := IntToStr(sira);
               liste1.Add(str1);
               str1 := '';


               str2 := dm.IBDsetStoklarSTOK_ADI.AsString;
               liste2.Add(str2);
               str2 := '';

               str3 := dm.IBDsetStoklarStok_tipi.AsString;
               liste3.Add(str3);
               str3 := '';


               sira:=sira+1;

            end;
               dm.IBDsetStoklar.Next;
                ////stoklar whilw döngü sonu

          end;  ///subeler while döngü sonu
           control:=1;
          //stok adedi

           Mem := TMemoryStream.Create;
           Liste.SaveToStream(Mem);
           ClipBoard.SetTextBuf(Mem.Memory);
           xApp.ActiveSheet.cells[ilksatir+1,ilksutun+dm.IBDsetsubeler.RecNo].pastespecial;
           liste.Clear;
           dm.IBDsetsubeler.Next;

  end;
          //sira
               Mem1 := TMemoryStream.Create;
               Liste1.SaveToStream(Mem1);
               ClipBoard.SetTextBuf(Mem1.Memory);
               xApp.ActiveSheet.cells[ilksatir+1,1].pastespecial;
          //stok adı
               Mem2 := TMemoryStream.Create;
               Liste2.SaveToStream(Mem2);
               ClipBoard.SetTextBuf(Mem2.Memory);
    //           xapp.ActiveSheet.range[hucre1,hucre2].pastespecial;
               xApp.ActiveSheet.cells[ilksatir+1,2].pastespecial;

          //stok tipi
               Mem3 := TMemoryStream.Create;
               liste3.SaveToStream(Mem3);
               ClipBoard.SetTextBuf(Mem3.Memory);
               xApp.ActiveSheet.cells[ilksatir+1,7].pastespecial;
        ///Stok adedini yazdırıyoruz
         dm.IBDsetStoklar.First;
         while not dm.IBDsetStoklar.Eof do
           begin
               hucre1:='B'+inttostr(ilksatir+dm.IBDsetStoklar.RecNo);
               hucre2:='F'+inttostr(ilksatir+dm.IBDsetStoklar.RecNo);
               xsayfa.range[hucre1,hucre2].mergecells:=true;
               str4 := dm.IBDsetStoklarSTOK_ADET.AsString;
               liste4.Add(str4);
               str4 :='';
               dm.IBDsetStoklar.Next;
           end;
               xsayfa.cells[ilksatir,ilksutun+dm.IBDsetsubeler.RecordCount+2]:='GENEL STOK ADEDİ';
               Mem4 := TMemoryStream.Create;
               liste4.SaveToStream(Mem4);
               ClipBoard.SetTextBuf(Mem4.Memory);
               xApp.ActiveSheet.cells[ilksatir+1,ilksutun+dm.IBDsetsubeler.RecordCount+2].pastespecial;


         ////Dağıtılan stok adedini yazıdırıyoruz

         dm.IBDsetStoklar.First;
         while not dm.IBDsetStoklar.Eof do
           begin
               dm.IBQ.Close;
               dm.IBQ.SQL.Clear;
               dm.IBQ.SQL.Add('select sum(z.ver_adet), z.stok_id  from zimmetler z');
               dm.IBQ.SQL.Add('where (z.stok_id='+dm.IBDsetStoklarID.AsString+')');
               dm.IBQ.SQL.Add('group by z.stok_id');
               dm.IBQ.Open;

               if  dm.IBQ.Fields[0].AsString='' then
               begin
                str5:='0';
               end
               else
               begin
                str5 := dm.IBQ.Fields[0].AsString;
               end;

              //  str5 := dm.IBQ.Fields[0].AsString;
               liste5.Add(str5);
               str5 :='';
               dm.IBDsetStoklar.Next;
           end;
               xsayfa.cells[ilksatir,ilksutun+dm.IBDsetsubeler.RecordCount+1]:='GENEL TOPLAM';
               Mem5 := TMemoryStream.Create;
               liste5.SaveToStream(Mem5);
               ClipBoard.SetTextBuf(Mem5.Memory);
               xApp.ActiveSheet.cells[ilksatir+1,ilksutun+dm.IBDsetsubeler.RecordCount+1].pastespecial;


              //copyalama sonucu sonraki bozuk kayıtlar siliniyo
              xsayfa.Range['A'+inttostr(ilksatir+1+dm.IBDsetStoklar.RecordCount),'AB5000'].Rows.delete;

              //aralıkdaki hücrelere çerçeve ekleniyo
              xsayfa.RANGE['A1'+':'+'Z'+inttostr(ilksatir+1+dm.IBDsetStoklar.RecordCount)].Borders.LineStyle := xlContinuous;

  
end;
gercek_16
Üye
Mesajlar: 108
Kayıt: 19 Haz 2005 02:42
Konum: mersin

Re: Ferrari Hızında Excel e veri gönderme

Mesaj gönderen gercek_16 »

Merhabalar 2003 kullanıyorum zaten, pastespeciali de denedim ama aynı hatayı veriyor. :(
Cevapla