Excel'den Firebird Veri Tabanına Kayıt Sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
penguen
Üye
Mesajlar: 93
Kayıt: 31 Mar 2006 11:58

Excel'den Firebird Veri Tabanına Kayıt Sorunu

Mesaj gönderen penguen »

Aşşagıdaki kod ile firebird veri tabanına excelden kayıt yapmak istiyorum ama

Kod: Tümünü seç

DataModule1.IBQuery1.Append;
bölümünde hata veriyor...

kodun tamamını aşşagıya eklıyorum. Bir de excelden 500.000 kayıt firebird en hızlı nasıl kayıt edebılırım. Bu kod cok yavaş...

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
var
book:variant;
excel,sheet:variant;
satir, sutun:integer;
str:string;
begin

excel := createOleObject('Excel.application');
DataModule1.OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls';
if DataModule1.opendialog1.Execute then
begin
book:= Excel.WorkBooks.Open(DataModule1.OpenDialog1.FileName);
try
Screen.Cursor := crHourGlass;
sheet := book.worksheets[1];
for satir:=1 to 60000 do
begin
str := sheet.cells[satir, 1];
if (str <> '') then
begin
Update;
DataModule1.IBQuery1.Append;
for sutun:=1 to 6 do
DataModule1.IBQuery1.Fields[sutun-1].AsString :=sheet.cells[satir, sutun];
DataModule1.IBQuery1.Post;
end;
end;
Excel.quit;
excel:=Unassigned;
finally
Screen.Cursor := crDefault;
end;
end;

End;
[/code]
En son penguen tarafından 25 Nis 2007 04:34 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

Verdiği hatayı da yazsaydın daha iyi olurdu.

1. Query bileşeni açık olmayabilir.
2. Query için tablo tanımı yapılmamış olabilir.
3. Query 'nin insert,edit tanımları yapılmamış olabilir.
aklıma gelenler bunlar.
kolay gelsin.
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Mesaj gönderen shadowmann »

HOcam başlığın konuyla alakası var mı? Başlığı değiştirir misin?
Yapmak istediğiniz exceldeki kayıtları fb ye aktarmak ise bence ems ile import edebilrsin. Odbc de alabilirsin. Eğer bu bir seferlik bir şey ise hiç kod yazmakla uğraşma. İmport export araçları var. Özellikle ems bu işlerle uğraşıyor.
Linki
Importing data from MS Excel, DBF, TXT and CSV
Her zaman bir vâmuk-i azra olur alem bu ya,
Nev-be-nev efsaneler peydâ olur alem bu ya,
Kabz u bast kıl tefekkür aleminde ey gönül,
Vakt-i sermânın sonu, vakt-i germân olur alem bu ya...
penguen
Üye
Mesajlar: 93
Kayıt: 31 Mar 2006 11:58

Mesaj gönderen penguen »

Lost Soul yazdı:Verdiği hatayı da yazsaydın daha iyi olurdu.

1. Query bileşeni açık olmayabilir.
2. Query için tablo tanımı yapılmamış olabilir.
3. Query 'nin insert,edit tanımları yapılmamış olabilir.
aklıma gelenler bunlar.
kolay gelsin.
1.query açik
2.tablo tanımı yapılmıs
3.query 'nin nasıl insert edit tanımı yapacagız anlamadım. Ek bir kod mu gerekiyor?

Firebird yeni başladım 3 şıkka açıklık getirir misin?



ilgiliendiğin için teşekkürler

Şu hatayı veriyor...

Kod: Tümünü seç

Cannot insert into dataset(No insert Query)
penguen
Üye
Mesajlar: 93
Kayıt: 31 Mar 2006 11:58

Mesaj gönderen penguen »

shadowmann yazdı:HOcam başlığın konuyla alakası var mı? Başlığı değiştirir misin?
Yapmak istediğiniz exceldeki kayıtları fb ye aktarmak ise bence ems ile import edebilrsin. Odbc de alabilirsin. Eğer bu bir seferlik bir şey ise hiç kod yazmakla uğraşma. İmport export araçları var. Özellikle ems bu işlerle uğraşıyor.
Linki
Importing data from MS Excel, DBF, TXT and CSV
Hocam başlık ile anlamak istediğim doğru sanırım. Çünkü burada anlamadığım bir olay var daha önce access'de kayıt yapabildiğim kod ile firebird ile kayıt yapamıyorum.
yok hocam bir kez yapmayacağım. Birden fazla kayıt olabilecek ...Ama araştırmaya değer ilgilindiğin için teşekkürler...
Kullanıcı avatarı
baypipox
Üye
Mesajlar: 122
Kayıt: 16 Eki 2006 04:23
İletişim:

Mesaj gönderen baypipox »

Lost Soul yazdı:Verdiği hatayı da yazsaydın daha iyi olurdu.

1. Query bileşeni açık olmayabilir.
2. Query için tablo tanımı yapılmamış olabilir.
3. Query 'nin insert,edit tanımları yapılmamış olabilir.
aklıma gelenler bunlar.
kolay gelsin.
Yukardakilerin açıklaması...
1.) DataModule1.IBQuery1.Append; burda kullandığın IBQuery1 adındaki bileşeni open etmelsin demek istemiş yani;

DataModule1.IBQuery1.open;

diyeceksin closed databese felan gibi bir hata alıyosan.

2.) IBQuery1'in SQL'ini kontrol et demiş... kısacası..

3.) IBQuery1'deki tabloya kayıt yapmadan önce tabloyu kayıt yapılabilir duruma getir demiş yani;

DataModule1.IBQuery1.insert; kayıt girmek için...
DataModule1.IBQuery1.edit; girilen kaydı düzeltmek update etmek için..


Gelgelim senin sıkıntına kod çok yavaş demişsin, bence yavaşlık firebird den kaynaklı olabilir... çünki 500000 kayıt bi çırpıda olabilecek bişey değil.
En son baypipox tarafından 25 Nis 2007 03:31 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
penguen
Üye
Mesajlar: 93
Kayıt: 31 Mar 2006 11:58

Mesaj gönderen penguen »

baypipox yazdı:Gelgelim senin sıkıntına kod çok yavaş demişsin, bence yavaşlık firebird den kaynaklı olabilir... çünki 500000 kayıt bi çırpıda olabilecek bişey değil.
Baypipox 100.000 kaydı bir buçuk saate atması normal mı? Yoksa ben mi bir yerde hata yapıyorum? Daha once access'de denedim daha hızlı kayıt gerçekleşiyordu.

Firebird ilk defa kullanıyorum ve kullanmamın nedenlerinden biri de sitede yapılan yorumlardı.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
excelden tabloyu farklı kaydet diyerek dbase yada paradox vt sine çevirin sonra onudan kayıtları çekerek fb ye insert etmeyi deneyin.
başlık konusunda gelince
forum kuralları yazdı:Mesajınıza uygun ve konuyu özetleyen kısa bir başlık yazın...
demiş.
balık olarak excelden fb ye kayıt aktarımı gibi bişey daha uygun olur. arama yapan arkadaşlar başlığı gördüklerinde kendi işlerine yarayacak bir şey olduğunu anlayabilmeliler....
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Mesaj gönderen shadowmann »

Bir de data pump ı deneyebilirsiniz. Ben genelde odbc driverlarını yükler ve data pump ı kullanırım. Şu ana kadar problem yaşamadım.
Her zaman bir vâmuk-i azra olur alem bu ya,
Nev-be-nev efsaneler peydâ olur alem bu ya,
Kabz u bast kıl tefekkür aleminde ey gönül,
Vakt-i sermânın sonu, vakt-i germân olur alem bu ya...
penguen
Üye
Mesajlar: 93
Kayıt: 31 Mar 2006 11:58

Mesaj gönderen penguen »

shadowmann yazdı:Bir de data pump ı deneyebilirsiniz. Ben genelde odbc driverlarını yükler ve data pump ı kullanırım. Şu ana kadar problem yaşamadım.
Örnek kod verebilir misin? Hiç data pump kollanmamıştım...
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Mesaj gönderen shadowmann »

Bu linkten firebird için odbc driverını indirin. Sisteme kurun. Sonra denetim masası- yönetimsel araçlar-veri kaynaklarına girin. ekle firebird odbc yi bulun. Veritanınıza bağlantıyı yapın. SOnra tekrar ekleye tıklayın. Bu sefer excel driverı ve orda göreceğiniz üzere çalışma kitabını seçin. (Bu kısımda odbc sürücüsünü yüklediğiniz tüm veritabanlarına bağlantı kurabilirsiniz.) Daha sonra delphi yüklerken data pump ı da kurduğnuz varsayımı ile datapumpı çalıştırın. Kaynak ve hedefi seçin. Gerisini yaparsınız diye düşünüyorum.
Ben delphi 2007 yi kurduğum için maalesef data pump kurulu değil. Ama bu yöntem benim hep kullandığım bir yöntemdi. Umarım sizde de işe yarar.
Alternatif olarak:
Accessdan import-dışveri al- excel dosyasını seçin. SOnra accessdan sql olarak export edip firebird de sorguyu çalıştırabilirsiniz. Bu işlerde tek yöntem değil hangisi işinize yararsa onu kullanmak daha iyidir.
Her zaman bir vâmuk-i azra olur alem bu ya,
Nev-be-nev efsaneler peydâ olur alem bu ya,
Kabz u bast kıl tefekkür aleminde ey gönül,
Vakt-i sermânın sonu, vakt-i germân olur alem bu ya...
penguen
Üye
Mesajlar: 93
Kayıt: 31 Mar 2006 11:58

Mesaj gönderen penguen »

Full Convert diye bir program buldum. Exceldeki kayıtları saniyede 1.500 kayıt ile firebird aktarıyor. Kayitları biner biner aktarım ile yapıyor. Bunu nasıl yapabiliriz? Mümkün müdür? (Full convert yapabildiğine göre mümkün görünüyor ama amatörler için yapıabilir mi?)
Cevapla