excel deki bilgiyi aktarma
muhittin_turmus31.01.2004 - 10:31:56
deneme amaçlı bir program yazdım dbaseIV kullanıyorum exceldeki bir bilgiyi nasıl aktarabilirim yardımcı olursanız sevinirim :D
 
mrmcop01.02.2004 - 01:37:06
Selam.

- Bu işi yapmanın bir çok yolu vardır. Benim onayladığım en basit yolu ADO ile Excel dosyasına direkt bağlantı kurup, sanki senin kullandığın DbaseIV tablosuymuş gibi erişmek şeklinde olacaktır.

- Gerekenler bir AdoConnection ve Bir AdoQuery nesnesi.
- Daha önce ADO ile bir bağlatı oluşturmadıysan sana da iyi bir deneme şansı oluşur.

- ExcelDosya diye String bir değişken tanımlarsın. Excel dosyanın yolunu ve adını buna verirsin.

- AdoConnection'un ConnectionString değeri aşağıdaki gibi olsun.

'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ ExcelDosya + ';Extended properties=Excel 8.0';


- Geriye bu AdoQuery için yapacağın SQL sorgu satırını eklemek kalıyor.

AdoQuery.SQL.Add( 'Select * from [Sayfa1$]');


- Burada Sayfa1$ tabir edilen; $ işareti ile biten kelime, senin Excel dökümanındaki WorkSheet (sayfanın) adıdır.

- Bayaramın kutlu olsun.
 
husonet01.02.2004 - 10:10:17
Merhaba,

Bu konu dahaönce konuşulmuştu ben size linkini veriyorum incelersiniz.
http://www.delphiturkiye.com/forum/viewtopic.php?t=1060&highlight=excel

Kolay Gelsin...

Bayramınız Kutlar İyi Bayramlar Dilerim.
 
mrmcop01.02.2004 - 13:44:14
- @husonet'in verdiği linkte ADO tekniği yokmuş. Bu sayede eklenmiş oldu.

- Lütfen soru sormadan önce arama yapmayı ihmal etmeyin. Çözüm bulamadığınız durumda daha önce arama sonucu ulaştığınız forum başlığını referans verip, onunla bağlantılı yönlendirin ki gelcekte aynı problemle karşılaşanlar o başlık senin bu başlık benim dağılmasınlar, derli toplu çözüm bulabilsinler.
 
MicroChip20.03.2004 - 14:17:52
@mrmcop dostum ben genelde ado kullanıyorum
fakat daha önce excel dosyasına bağlandığımda sadece yanlış hatırlamıyorsam 10 veya 15 kayıtı gösteriyordu 100 ün üzerinde kayıt olduğu halde bunun sebebi nedir?
(Başlığı gördüm de merak ettim sende kullanmışsın bu yöntemi sen daha iyi bilirsin)

Saygılar
 
mrmcop20.03.2004 - 14:24:40
- Altalta kayıtlar arasında tamamen boş bir satır vardır... O satırı silince veya ilk sütununa bir giriş yaparsan geri kalan kayıtları kazanırsın....
 
MicroChip20.03.2004 - 16:40:15
yooo boş bir satır yok. ve mesela 5 alan yani kolon var excel de benim ado f5, f6, bilmem ne diye yeni alanlar gösteriyo :)

mrmcop icq dan sana şarkı söyledim yine selam demedim alacağın olsun senin :)
 
mrmcop28.03.2004 - 00:01:30
Selam...

- Yahu ICQ'dan herhangi bir tepki almamıştım... Şimdi tekrar girdim belki offline gelmiştir diye, yine yok... Embarassed History'ye baktım bomboş...

- Alanlar arasında değil satırlar arasında boşluk vardır demek istemiştim... Bazen satırlar arasında hidden edilmiş (line height değeri 0 olmuştur) olabiliyor... Idea

- En kötü ihtimalle tümünü seçip, yeni bir worksheet'e özel yapıştır deyip sadece değerleri dersen boşluk kalmadan mevcut kayıtları aktarmış olursun...

- DOS işletim sistemi olsaydı ASCII karakter karışmıştır diycem ama öyle bişeyle Excel'de karşılaşmadım... Dilersen bu Excel dosyasını bana mail ile yolla bir de ben bakayım... Belki yeni bişi öğrenmiş oluruz...
 
MicroChip28.03.2004 - 06:18:12
Valla dostum excel dosyası nasıl biliyonmu a kolonuna a1 yaptım b ye b1 c ye c1 aşağı çektim a100 e kadar ve bunu okuyamadı salak delphi :)
 
mrmcop28.03.2004 - 13:11:10
Dostum bir yerde hata yapıyorsun galiba... Exclaim Question Idea

- Aynı bahsettiğin gibi yaptım... Sorunsuz okudu tümünü... Idea

- Boş bir form aç ve Forma aşağıdakileri koy. Şimdilik herhangi bir atama/yönlendirme yapma... Kodda bunu senin yerine yaptım...

bir tane AdoConnection
bir tane AdoQuery
bir tane DataSource
bir tane DBGrid

- Kod da aynen aşağıda...

- Form Create olayına da aşağıdaki kodu aynen copy/paste yap...

Var
ExcelDosya : String;
begin
ExcelDosya := 'D:\DOC\Kitap1.xls';
DataSource1.DataSet := AdoQuery1;
DBGrid1.DataSource := DataSource1;

AdoConnection1.LoginPrompt := False;
AdoConnection1.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ ExcelDosya + ';Extended properties=Excel 8.0';
AdoQuery1.Connection := AdoConnection1;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add( 'Select * from [Sayfa1$]');
AdoQuery1.Active := True;
end;
 
MicroChip29.03.2004 - 04:09:57
:) Valla dostum yöntemimiz aynı farklı olan şu:
(ben sadece deneme amaçlı yapmıştım meraktan yani)

ben datasete yada query e design anında connectionstringi vermiştim ve dataseti de true yapmıştım. sen ise runtime da yapmışsın.. bundan dolayı sorun çıkar mı bence çıkmaması lazım...

saygılar...
 
mrmcop29.03.2004 - 16:57:52
Selam...

- Yukarda yazdığım şekilde çalışmış mıydı ? Denedin mi ?

- RunTime/DesignTime farketmez bence de...
 
MicroChip29.03.2004 - 18:27:58
mrmcop dostum evet senin yukarıda yazdıklarını ben runtime da denemedim designtime da denedim programı çalıştırdırdım ama ilk başta dediğim olmuştu işte :) ne bileyim bu iş yerindeki bilgisayarım kafayı yemiş de olabilir. 8 aydır ellemedim hiçbiryerini. Dur bir de evden deniyeyim sonucu sana söylerim :)

See you...
 
MicroChip31.03.2004 - 02:21:41
mrmcop dostum aynen haklısın benim işyerindeki bilgisayara yeniden ayar çekmem lazım komple :)
aynı şeyi şimdi evde denedim runtime designtime hepsinde tıkır tıkır :)
moralim bozuldu biraz. o kadar uğraşmıştım olmamıştı muhittin_turmus a verdiğin cevabı da tesadüfen görünce mesaj atayım dedim :) ulan deli önce evde bir desene dimi :)
import yapabilmek için delphiye takla attırdım valla :) (İşyerinde)
 
alperen01.04.2004 - 10:16:54
DropMaster
 
Armani09.06.2004 - 17:28:10
Ustalar selam
şu an bu konuyla ilgileniyorum
Burda sormak istedigim Şu an kullandıgım programda değişiklik yapacagım. Değişiklik ise artikel(product_id) numarasını yazınca diger kolona (tanım)bu ado ile baglandıgım başka bir excel dosyasından tanımı alacak. bunun için örnek bir kod varmı. Birde bu kodu fieldin onchange kısmınamı yazmalıyım.

teşekkürler
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com