Excel aktarım... 6 adet Ado Query den?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
chnyildirim
Üye
Mesajlar: 39
Kayıt: 25 Haz 2003 01:51
İletişim:

Excel aktarım... 6 adet Ado Query den?

Mesaj gönderen chnyildirim »

SA. 6 adet AdoQuery im var. Bunları tek bir excel de nasıl toplayabilirim. Tek queryi excel e atabiliyorum. Fakat ilk query nin sonunda procedure ü durduramadığım için hemen excel dosyası açılıyor... Kod aşağıda...
Bu arada query fieldları:
1. query: 1 field
2. query: 2 field
3. query: 3 field
4. query: 2 field
5. query: 3 field
6. query: 4 field

Not: Tek querylik çalışmalarınızda aşağıdaki kodu kullanabilirsiniz.

Kod: Tümünü seç

   uses Windows,Shellapi; // Eklemeyi unutmayın!

   procedure excelhtmlaktarcoklu(sender:TObject;q:TADOQuery;key:string); // Uses kısmının altına eklemeyi unutmayın!
*********************************************************************************************************
   procedure TDuKayitDurumForm.SpeedButton1Click(Sender: TObject);
   ToplamQuery.Close;
   ToplamQuery.SQL.Strings[3] := ''''+yil+'%'+'''';
   ToplamQuery.Open;
   excelhtmlaktarcoklu(Self,ToplamQuery,'X');
*************************************************************************************
procedure excelhtmlaktarcoklu(sender:TObject;q:TADOQuery;key:string);
var i:integer; a:boolean;
    slist : TStringList;
    h:HWND;
    OfficeAraclari : string;
    WebSayfasi     : string;
begin
   OfficeAraclari  := 'excel.exe';
   WebSayfasi      := 'iexplore.exe';
   
   key := Uppercase(key);
   slist := TStringList.Create();

   slist.Add('<Table border=1 cellpadding=2 cellspacing=0 style="font-family: Verdana; font-size: 10px;">');
   slist.Add('   <tr bgcolor=navy style="color: white">');

   for i := 0 to (q.FieldCount - 1) do
   begin
      if q.Fields[i].Visible then
      begin
         slist.Add('      <td><b>'+q.Fields[i].DisplayLabel+'</b></td>');
      end;
   end;
   slist.Add('   </tr>');

   if not q.Active then q.Open;
   q.First;
   while not q.Eof do
   begin
      slist.Add('   <tr>');
      for i := 0 to q.FieldCount - 1 do
      begin
         if q.Fields[i].Visible then
         begin
            if (key = 'H') AND (q.Fields[i].Text = '') then
                slist.Add('      <td>&nbsp;</td>')
            else
                slist.Add('      <td>' + q.Fields[i].Text + '</td>');
         end;
      end;
      slist.Add('   </tr>');
      q.Next;
   end;
   slist.Add('</Table></td></tr><table>');

   if key = 'X' then
   begin
      slist.SaveToFile('C:\tablo1.xls');
      ShellExecute(h,'open',PChar(OfficeAraclari),'C:\tablo1.xls',nil,sw_Shownormal);     //'excel.exe'
   end;

   slist := nil;
end;

Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Excel aktarım... 6 adet Ado Query den?

Mesaj gönderen aslangeri »

s.a.
6 queryden dönen sonuç aynı sütunlaramı sahip yoksa farklı sütunlaramı?
bu 6 queryde aynı sayfadamı göstermek istiyorsunuz yoksa farklı sayfalardamı?
o procedure ile istediğiniz işlemi yapmanız biraz meşakkatli olur.
sitedeki diğer excele aktarım kodlarını incelerseniz belki sorununuza çözüm bulabilirsiniz...
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
chnyildirim
Üye
Mesajlar: 39
Kayıt: 25 Haz 2003 01:51
İletişim:

Re: Excel aktarım... 6 adet Ado Query den?

Mesaj gönderen chnyildirim »

As.,
6 queryden dönecek sütunlar farklı. Field sayılarını yazdım. O kadar adet kolon olması lazım.
İşin en zor yanıda aynı excel de göstermem gerekiyor.
Bu arada queryler aynı veritabanından verileri alıyor.
Dediğin gibi 1 haftadır ara ara site de araştırma yapıyorum. Son çare duyurmak oldu...
Neyse araştırmaya devam... :arrow:
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Excel aktarım... 6 adet Ado Query den?

Mesaj gönderen aslangeri »

sizin gönderdiğiniz kodda
slist i global tanımlarsanız ve procedurenin dışında create ederseniz.
aynı şekilde save işleminide procedurenin dışına alırsanız.
yapmanız gereken şey
  • slisti create et
    excelhtmlaktarcoklu(adoquery1)
    ....
    excelhtmlaktarcoklu(adoqueryn)
    slist i save et
kodlarla oynamak size kalmış.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
chnyildirim
Üye
Mesajlar: 39
Kayıt: 25 Haz 2003 01:51
İletişim:

Re: Excel aktarım... 6 adet Ado Query den?

Mesaj gönderen chnyildirim »

3 saat içinde sorunum çözüldü...
@aslangeri sana ne kadar teşekkür etsem az... :alkis:
Teşekkürler DT. :elsalla:
Cevapla