program çıktısı olarak excel kullanma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ulash
Üye
Mesajlar: 5
Kayıt: 24 Kas 2005 05:24
Konum: İstanbul

program çıktısı olarak excel kullanma

Mesaj gönderen ulash »

önce herkese merhaba. ben delphiyi yeni kullanmaya başladım ve forum bana baya bir yol gösterici oldu.benim sorunum şu anda bir program üzerinde çalışıyorum ve veritabanı olarak access kullanıyorum. veritabanına adotable ile bağlanıyorum.program, veritabanındaki bazı kayıtları excelde oluşturduğum bir çıktı sayfasına gönderiyor. excel ilk çıkıyı gönderdiğin zaman hiç bir sorun yok excel kaptıp diğer kayıta program aracılığıyla geldiğim zaman program şu hatayı veriyor. 'OLE error 800A03EC'. programı kapatıp açıp yeni kayıta geldiğim zaman o kayıtla ilgili çıkyıyıda excelden rahatça alabiliyorum. qreport falan mı kullansam anlayamadım. aşağıda ki kodla execele gönderiyorum. teşekkürler.

Kod: Tümünü seç

procedure TForm6.Button1Click(Sender: TObject);
begin
try
  excel:=CreateOleObject('Excel.Application');
 except
  ShowMessage('excel başlatılamıyor');
  exit;
 end;
 excel.workbooks.Open('C:\Program Files\3M\DENETIM\Doc\kalip.xls',,ReadOnly:=False);
 excel.Cells[9,6].value:=Form1.DBEdit1.Field.Value;
 excel.Cells[10,6].value:=Form1.DBEdit80.Field.Value;
 excel.Cells[10,8].value:=Form1.DBEdit81.Field.Value;
 excel.Cells[11,6].value:=Form1.DBEdit3.Field.Value;
 excel.Cells[12,6].value:=Form1.DBEdit5.Field.Value;
 excel.Cells[13,6].value:=Form1.DBEdit4.Field.Value;
 excel.Cells[13,8].value:=Form1.DBComboBox3.Field.Value;
 excel.Cells[14,6].value:=ComboBox1.Text;
 excel.Cells[14,8].value:=ComboBox2.Text;
 excel.Cells[15,6].value:=Form1.DBEdit2.Field.Value;
 excel.Cells[16,6].value:=DBEdit1.Field.Value;
 excel.Cells[17,6].value:=Form1.DBEdit77.Field.Value;
 excel.Cells[20,4].value:=ComboBox1.Text;
 excel.Cells[20,6].value:=ComboBox2.Text;
 excel.Cells[33,3].value:=DateToStr(DateTimePicker1.Date);
 excel.Cells[45,1].value:=Form1.DBLookupComboBox1.Field.Value;
 excel.Cells[45,6].value:=Form1.DBLookupComboBox11.Field.Value;
 excel.Cells[45,9].value:=Form1.DBEdit77.Field.Value;
 excel.Visible:=True;
end;

procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 if not VarIsEmpty(excel) then
  excel.quit;
  excel:=Unassigned;
end;
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

öncelikle aramıza hoşgeldiniz. kullandığınız kodda ilk gözüme çarpan şu oldu form üzerindeki dbeditleri kullanıyorsunuz. veri alım işini ilgili dataset ile yaparsanız daha iyi olur diye düşünüyorum.
.............

excel.Cells[9,6].value:=Form1.ibdataset1.Fieldbyname('ALAN').asstring;

................

+

search.php

ve

viewtopic.php?t=12349&highlight=excele+veri+aktarma

gibi kolay gelsin.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Kod: Tümünü seç

procedure TForm6.Button1Click(Sender: TObject); 
begin 
try 
  excel:=CreateOleObject('Excel.Application'); 
 except 
  ShowMessage('excel başlatılamıyor'); 
  exit; 
 end; 
 excel.workbooks.Open('C:\Program Files\3M\DENETIM\Doc\kalip.xls',,ReadOnly:=False); 
 excel.Cells[9,6].value:=Form1.DBEdit1.Field.Value; 
 excel.Cells[10,6].value:=Form1.DBEdit80.Field.Value; 
 excel.Cells[10,8].value:=Form1.DBEdit81.Field.Value; 
 excel.Cells[11,6].value:=Form1.DBEdit3.Field.Value; 
 excel.Cells[12,6].value:=Form1.DBEdit5.Field.Value; 
 excel.Cells[13,6].value:=Form1.DBEdit4.Field.Value; 
 excel.Cells[13,8].value:=Form1.DBComboBox3.Field.Value; 
 excel.Cells[14,6].value:=ComboBox1.Text; 
 excel.Cells[14,8].value:=ComboBox2.Text; 
 excel.Cells[15,6].value:=Form1.DBEdit2.Field.Value; 
 excel.Cells[16,6].value:=DBEdit1.Field.Value; 
 excel.Cells[17,6].value:=Form1.DBEdit77.Field.Value; 
 excel.Cells[20,4].value:=ComboBox1.Text; 
 excel.Cells[20,6].value:=ComboBox2.Text; 
 excel.Cells[33,3].value:=DateToStr(DateTimePicker1.Date); 
 excel.Cells[45,1].value:=Form1.DBLookupComboBox1.Field.Value; 
 excel.Cells[45,6].value:=Form1.DBLookupComboBox11.Field.Value; 
 excel.Cells[45,9].value:=Form1.DBEdit77.Field.Value; 
 excel.Visible:=True; 
end; 

procedure TForm6.FormClose(Sender: TObject; var Action: TCloseAction); 
begin 
 if not VarIsEmpty(excel) then 
  excel.quit; 
  excel:=Unassigned; 
end;
burada excel kapatma işini formun close sine yazmışsın kodunun son end satırından sonra excel i kapatman gerekiyor sanırım. bu yüzden excel açık kalıyor olabilir ve o yüzden hata alabiliyor olabilirsin.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
excel:variant;
begin
try
  excel:=CreateOleObject('Excel.Application');
 except
  ShowMessage('excel başlatılamıyor');
  exit;
 end;
 excel.workbooks.Open('C:\Documents and Settings\OGRETMEN\Desktop\excell deneme\kalip.xls',,ReadOnly:=False);
 excel.Cells[9,6].value:=ADOTable1ID.value;
 excel.Cells[10,6].value:=ADOTable1ADI.Value;
 excel.Cells[10,8].value:=ADOTable1ADRES.Value;
 excel.Cells[11,6].value:=ADOTable1TELEFON.Value;
 excel.Cells[33,3].value:=DateToStr(DateTimePicker1.Date);
 excel.Visible:=True;

end;
hocam kodunuzu bu şekilde derledim ve hiç bir hata olmadan çalıştı

birde böyle deneyin bence

excele attıktan sonra kayıtlar arasında gezdim yeni kayıt yaptım
programı kaparttım açtım ama hiç bi hata vermedi
:lol:
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
ulash
Üye
Mesajlar: 5
Kayıt: 24 Kas 2005 05:24
Konum: İstanbul

Mesaj gönderen ulash »

arkadaşlar sorunu çözdüm sorun veritabanındaki bir kayıtın metin değil de tarih şeklinde olmasındanmış. veritabanındaki o kayıta ait sütünü matine çevirerek hallettim. genede herkese teşekkürler.
Cevapla