firebird csv import
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
firebird csv import
s.a. delphi 7, firebird veritabanı, ibdataset bağlantı ve excelden firebirde aktarmam gereken bir dosyam var.
programımın içinden excel dosyasını csv olarak gride aktarabiliyorum. fakat gridden database 'e aktarımı bir türlü gerçekleştiremedim.
forumda ve hatta dtoffline da çok defa aramama rağmen bir sonuç elde edemedim.
konu ile ilgili bilgisi olan arkadaşlar yardımcı olursanız çok sevinirim. delphide yeniyim.
programımın içinden excel dosyasını csv olarak gride aktarabiliyorum. fakat gridden database 'e aktarımı bir türlü gerçekleştiremedim.
forumda ve hatta dtoffline da çok defa aramama rağmen bir sonuç elde edemedim.
konu ile ilgili bilgisi olan arkadaşlar yardımcı olursanız çok sevinirim. delphide yeniyim.
Re: firebird csv import
Merhaba;
Aşağıdaki linkte Excelden import etme olayından bahsedildi CSV dosyası da Excel türünde olduğundan kodlarda birkaç değişiklik ile kendinize göre düzenleyebilirsiniz. Örneği inceleyin yinede yapamazsanız izlediğiniz yolu da burada paylaşın birlikte doğru sonuc ulaşırız.
İyi Çalışmalar.
http://delphiturkiye.com/forum/viewtopi ... =2&t=32372
Aşağıdaki linkte Excelden import etme olayından bahsedildi CSV dosyası da Excel türünde olduğundan kodlarda birkaç değişiklik ile kendinize göre düzenleyebilirsiniz. Örneği inceleyin yinede yapamazsanız izlediğiniz yolu da burada paylaşın birlikte doğru sonuc ulaşırız.
İyi Çalışmalar.
http://delphiturkiye.com/forum/viewtopi ... =2&t=32372
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Re: firebird csv import
Sorunu paydalara bölelim.droxee yazdı:s.a. delphi 7, firebird veritabanı, ibdataset bağlantı ve excelden firebirde aktarmam gereken bir dosyam var.
programımın içinden excel dosyasını csv olarak gride aktarabiliyorum. fakat gridden database 'e aktarımı bir türlü gerçekleştiremedim.
(1) Excel'i bir kenara bırakalım.
(2) Firebird veritabanına herhangi bir yeni bir kayıt ekleme işlemini gerçekleştirebiliyor musunuz ? Öncelikle buna cevap bulalım.
Re: firebird csv import
muharrem abi firebirde veri ekleme konusunda bir sıkıntım yok sadece gride aktardığım verileri database aktaramıyorum.
Re: firebird csv import
özcan paşa verdiğin linke tıklayıp baktım ve bir sonuca ulaşamadım. arama çok yaptım ve hatta offline da da aradım ama çalışan bir koda ulaşamadım.
Re: firebird csv import
Tamam şimdi bir butona basınca gridin il satırındaki tek bir veri kümesini kaydeden kod örneği yazar mısın? Onun üzerinden örnekleyeyim
Ya da gridi boşver sabit değerler ile kayıt ekleyen bir örnek yaz buraya
Ya da gridi boşver sabit değerler ile kayıt ekleyen bir örnek yaz buraya
Re: firebird csv import
Kod: Tümünü seç
procedure Tfrm_urun.RzButton1Click(Sender: TObject);
var
EXCELDEKISATIR,EXCELDEKISUTUN:Integer;
SAYFA: Variant;
begin
IF OpenDialog1.Execute THEN BEGIN
EXCELDOSYASI:=CreateOleObject('excel.application');
EXCELDOSYASI.Visible:=false;
OpenDialog1.Filter := 'Excel Dosyaları (*.xls)|*.xls';
TRY
EXCELDOSYASI.workbooks.open[OpenDialog1.FileName];
exceldebilgisayisi;
FOR EXCELDEKISATIR:=1 to KACSATIR DO BEGIN
DataModule_.IBDataSet_Urun.Append;
DataModule_.IBDataSet_Urun.FieldByName('URUN_KOD').AsInteger:= exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,1].value;
DataModule_.IBDataSet_Urun.FieldByName('TUR_KOD').AsInteger:= exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,2].Value;
DataModule_.IBDataSet_Urun.FieldByName('SERI_NO').AsString:=exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,3].Value;
DataModule_.IBDataSet_Urun.FieldByName('AD').AsString:=exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,4].Value;
DataModule_.IBDataSet_Urun.FieldByName('MARKA_KOD').AsInteger:=exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,5].Value;
DataModule_.IBDataSet_Urun.FieldByName('MODEL_KOD').AsInteger:=exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,6].Value;
DataModule_.IBDataSet_Urun.FieldByName('BIRIM_KOD').AsInteger:=exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,7].Value;
DataModule_.IBDataSet_Urun.FieldByName('KAYNAK').AsString:=exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,8].Value;
DataModule_.IBDataSet_Urun.FieldByName('GARANTI').AsString:=exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,9].Value;
DataModule_.IBDataSet_Urun.FieldByName('KOD').AsString:=exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,10].Value;
DataModule_.IBDataSet_Urun.FieldByName('ACIKLAMA').AsString:=exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,11].value;
DataModule_.IBDataSet_Urun.FieldByName('DURUM_KOD').AsInteger:=exceldosyasi.ActiveSheet.Cells[EXCELDEKISATIR,12].Value;
DataModule_.IBDataSet_Urun.Refresh;
END;
FINALLY
IF NOT VarIsEmpty(EXCELDOSYASI) THEN
BEGIN
EXCELDOSYASI.DisplayAlerts := False;
EXCELDOSYASI.Quit;
EXCELDOSYASI := Unassigned;
END;
END;
ShowMessage('AKTARMA İŞLEMİ TAMAMLANDI.');
END;
end;
Re: firebird csv import
Kod: Tümünü seç
begin
Datamodule_.IBQuery1.Close;
Datamodule_.IBQuery1.SQL.Clear;
Datamodule_.IBQuery1.SQL.Add('INSERT INTO TBL_URUN (URUN_KOD, TUR_KOD, SERI_NO, AD, MARKA_KOD, MODEL_KOD, BIRIM_KOD, KAYNAK, GARANTI, KOD, ACIKLAMA, DURUM_KOD)');
Datamodule_.IBQuery1.SQL.Add('VALUES (:URUN_KOD, :TUR_KOD, :SERI_NO, :AD, :MARKA_KOD, :MODEL_KOD, :BIRIM_KOD, :KAYNAK, :GARANTI, :KOD, :ACIKLAMA, :DURUM_KOD)');
Datamodule_.IBQuery1.ParamByName('URUN_KOD').value:=Edit_Urun_Kod.Text;
Datamodule_.IBQuery1.ParamByName('TUR_KOD').value:=strtoint(Label_Tur_Kod.Caption);
Datamodule_.IBQuery1.ParamByName('SERI_NO').value:=Edit_Seri_No.Text;
Datamodule_.IBQuery1.ParamByName('AD').value:=Edit_Ad.Text;
Datamodule_.IBQuery1.ParamByName('MARKA_KOD').value:=strtoint(Label_Marka_Kod.Caption);
Datamodule_.IBQuery1.ParamByName('MODEL_KOD').value:=strtoint(Label_Model_Kod.Caption);
Datamodule_.IBQuery1.ParamByName('BIRIM_KOD').value:=strtoint(Label_Birim_Kod.Caption);
Datamodule_.IBQuery1.ParamByName('KAYNAK').value:=Edit_Kaynak.Text;
Datamodule_.IBQuery1.ParamByName('GARANTI').value:=Edit_Garanti.Text;
Datamodule_.IBQuery1.ParamByName('KOD').value:=Edit_Kod.Text;
Datamodule_.IBQuery1.ParamByName('ACIKLAMA').value:=Edit_Aciklama.Text;
Datamodule_.IBQuery1.ParamByName('DURUM_KOD').value:=strtoint(Label_Durum_Kod.Caption);
Datamodule_.IBQuery1.ExecSQL;
Datamodule_.IBTransaction1.CommitRetaining;
DataModule_.IBDataSet_Urun.Close;
DataModule_.IBDataSet_Urun.Open;
Edit_Urun_Kod.Clear;
Edit_Tur_Ad.Clear;
Edit_Seri_No.Clear;
Edit_Ad.Clear;
Edit_Marka_Ad.Clear;
Edit_Model_Ad.Clear;
Edit_Birim_Deger.Clear;
Edit_Birim_Tip.Clear;
Edit_Kaynak.Clear;
Edit_Garanti.Clear;
Edit_Kod.Clear;
Edit_Aciklama.Clear;
Edit_Durum_Ad.Clear;
Application.MessageBox('Yeni Kayıt Yapıldı !!!','BİLGİ',MB_OK);
btn_mlz_kaydet.Enabled:=False;
btn_mlz_iptal.Enabled:=False;
end;
Re: firebird csv import
İhtiyaç durumunda yazmış olduğum bir koddu umarım seninde işine yarar iyi çalışmalar
https://yadi.sk/d/TLpA9GqhWvtMu
https://yadi.sk/d/TLpA9GqhWvtMu
gideceği limanı bilmeyen gemiye hiçbir rüzgar yardım edemez...
Kod: Tümünü seç
Delete from hayat where cins="çıkarcılar"
Re: firebird csv import
Evet şimdi yapacağın işlemi daha rahat tarif edebiliriz. ( EDIT: Yukardaki yapmaya çalıştım ama olmadı dediğin kodu geç gördüm. Telefondan takip ettim de o bakımdan... Oradaki hatan Refresh yerine POST komutu vermen gerekirdi ki veritabanına yazılsın.)
şeklinde kodun var ya. Buraya öncelikle sadece Grid'in ilk (1) satırını kaydedecek şeklini yazalım.
Aşağıda bir integer değişken tanımlıyoruz. Adı iSatir olsun. (sütunları kendi düzenine göre numaralandırırsın, ben 1'den başladım sona kadar yazdım.)
Ne görüyorsun. iSatir ne ise o satırdaki veri veritabanına kaydedilecek. Yani, iSatir 1'den başlayıp satır sayısı kadar bir döngü oluşturduğunda senin StringGrid'deki içerik veritabanına kaydedilecek demektir. Bu kadar basit.
Biraz daha ileri gidersek bu INSERT sql ifadelerini tek bir SQL katarına yükleyip tümünü bir batında da ekletebilirsin, bir defalık bir işlem ise yukarıdaki biçimi basit döngü ile kullanman bir şey kaybettirmeyecektir.
Kod: Tümünü seç
Datamodule_.IBQuery1.ParamByName('URUN_KOD').value:=Edit_Urun_Kod.Text;
Datamodule_.IBQuery1.ParamByName('TUR_KOD').value:=strtoint(Label_Tur_Kod.Caption);
Datamodule_.IBQuery1.ParamByName('SERI_NO').value:=Edit_Seri_No.Text;
Datamodule_.IBQuery1.ParamByName('AD').value:=Edit_Ad.Text;
Datamodule_.IBQuery1.ParamByName('MARKA_KOD').value:=strtoint(Label_Marka_Kod.Caption);
Datamodule_.IBQuery1.ParamByName('MODEL_KOD').value:=strtoint(Label_Model_Kod.Caption);
Datamodule_.IBQuery1.ParamByName('BIRIM_KOD').value:=strtoint(Label_Birim_Kod.Caption);
Datamodule_.IBQuery1.ParamByName('KAYNAK').value:=Edit_Kaynak.Text;
Datamodule_.IBQuery1.ParamByName('GARANTI').value:=Edit_Garanti.Text;
Datamodule_.IBQuery1.ParamByName('KOD').value:=Edit_Kod.Text;
Datamodule_.IBQuery1.ParamByName('ACIKLAMA').value:=Edit_Aciklama.Text;
Datamodule_.IBQuery1.ParamByName('DURUM_KOD').value:=strtoint(Label_Durum_Kod.Caption);
Aşağıda bir integer değişken tanımlıyoruz. Adı iSatir olsun. (sütunları kendi düzenine göre numaralandırırsın, ben 1'den başladım sona kadar yazdım.)
Kod: Tümünü seç
Var
iSatir : Integer;
begin
...
...
...
iSatir := 1;
Datamodule_.IBQuery1.ParamByName('URUN_KOD').value :=StringGrid1.Cells[1, iSatir];
Datamodule_.IBQuery1.ParamByName('TUR_KOD').value :=strtoint(StringGrid1.Cells[2, iSatir]);
Datamodule_.IBQuery1.ParamByName('SERI_NO').value :=StringGrid1.Cells[3, iSatir];
Datamodule_.IBQuery1.ParamByName('AD').value :=StringGrid1.Cells[4, iSatir];
Datamodule_.IBQuery1.ParamByName('MARKA_KOD').value :=strtoint(StringGrid1.Cells[5, iSatir]);
Datamodule_.IBQuery1.ParamByName('MODEL_KOD').value :=strtoint(StringGrid1.Cells[6, iSatir]);
Datamodule_.IBQuery1.ParamByName('BIRIM_KOD').value :=strtoint(StringGrid1.Cells[7, iSatir]);
Datamodule_.IBQuery1.ParamByName('KAYNAK').value :=StringGrid1.Cells[8, iSatir];
Datamodule_.IBQuery1.ParamByName('GARANTI').value :=StringGrid1.Cells[9, iSatir];
Datamodule_.IBQuery1.ParamByName('KOD').value :=StringGrid1.Cells[10, iSatir];
Datamodule_.IBQuery1.ParamByName('ACIKLAMA').value :=StringGrid1.Cells[11, iSatir];
Datamodule_.IBQuery1.ParamByName('DURUM_KOD').value :=strtoint(StringGrid1.Cells[12, iSatir]);
...
...
...
end;
Biraz daha ileri gidersek bu INSERT sql ifadelerini tek bir SQL katarına yükleyip tümünü bir batında da ekletebilirsin, bir defalık bir işlem ise yukarıdaki biçimi basit döngü ile kullanman bir şey kaybettirmeyecektir.