Tabloya insert

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Tabloya insert

Mesaj gönderen varyemez »

biraz acemice soru ama sorayım yine de.
XML yapıdan aldığımız veriyi bir clientdatasete yükledik diyelim.. bu kayıtları sonradan kalıcı olarak bir tabloya (firebird tablosu) depolayacağız. Bu işi clientdataseti baştan sona taratarak table1.insert şeklnde yapabiliriz burası tamam.. Peki bunu tek bir SQL cümlesiyle yapmak mümkün mü.. eskiden dbase de APPEND FROM tablom ........ gibi komut kullanarak tablodan tabloya aktarma yapardık.. burada da INSERT TABLO (alan1, alan2) VALUES (SELECT alan1,alan2 from clientdataset1) gibi bir ifade olamaz mı.. ve de bunu SP şekline nasıl getirelim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Tabloya insert

Mesaj gönderen sabanakman »

Her kayıt satırı için bir adet insert sorgusu olabilir. Mesela 30 kayıt varsa 30 adet insert into ... sorgusu oluşturulup bu çalıştırılabilir. Bu da bir fikir sonuçta :mrgreen:
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Tabloya insert yine sorunlu

Mesaj gönderen varyemez »

Denemelerimde yine çuvalladım. insert işini SP olarak yazdım ancak bu sefer de boş kayıtlar oluşturuyor. SP aşağıdaki gibi:

Kod: Tümünü seç

SET TERM ^ ;

CREATE PROCEDURE ALIM_DEPOLA(
  SIRA INTEGER,
  TIP CHAR(1) CHARACTER SET WIN1254,
  ISLTARIH DATE,
  KIMDEN VARCHAR(13) CHARACTER SET WIN1254,
  KIME VARCHAR(13) CHARACTER SET WIN1254,
  DOCDATE DATE,
  RKN VARCHAR(15) CHARACTER SET WIN1254,
  BILDID VARCHAR(5) CHARACTER SET WIN1254,
  UC VARCHAR(5) CHARACTER SET WIN1254,
  GTIN VARCHAR(14) CHARACTER SET WIN1254,
  SN VARCHAR(20) CHARACTER SET WIN1254)
AS
BEGIN
  /* Procedure body */
insert into ITSHAR
  (SIRA, TIP, ISLTARIH, KIMDEN, KIME,DOCDATE, RKN, BILDID,UC ,GTIN, SN)
values
  (NULL, :TIP, :ISLTARIH, :KIMDEN, :KIME, :DOCDATE, :RKN, :BILDID,:UC ,:GTIN, :SN);
   SUSPEND;
END^

SET TERM ; ^
Delphi kodları da şöyle: (IBDataset kullanarak insert yapınca sorun çıkarmıyor) ancak SP kullanınca boş kayıt atıyor. sadece date alanları dolu geliyor ancak bunlar da bugünkü tarih değil , hatalı çıkıyor. 17/11/1858 nerden bulduysa? Bir yerlerde önemli bir hata yapıyorum ama bilemedim.

Kod: Tümünü seç

procedure TFormGiris.Button4Click(Sender: TObject);
begin
Button4.Enabled:=false;
dm.IBDataSet1.Active:=true;
 Formgiris.CevapData.First;
 
 while not formgiris.CevapData.Eof do
 begin
// dm.IBStoredProc1.StoredProcName:='ALIM_DEPOLA';
//dm.IBStoredProc1.Prepare;
//dm.IBStoredProc1.ParamByName('TIP').Value:='A';
//dm.IBStoredProc1.ParamByName('ISLTARIH').AsDate:=date;
//dm.IBStoredProc1.ParamByName('KIMDEN').Value:=kFR;
// dm.IBStoredProc1.ParamByName('KIME').Value:='';
//dm.IBStoredProc1.ParamByName('DOCDATE').AsDate:=Date;
//dm.IBStoredProc1.ParamByName('RKN').Value:='';
//dm.IBStoredProc1.ParamByName('BILDID').Value:=cbildirimid;
//dm.IBStoredProc1.ParamByName('UC').Value:=cevapdataUC.Value;
//dm.IBStoredProc1.ParamByName('SN').Value:=cevapdataSN.Value;
//dm.IBStoredProc1.ParamByName('GTIN').Value:= cevapdataGTIN.Value;
//dm.IBStoredProc1.ExecProc;
//dm.IBStoredProc1.UnPrepare;

dm.IBDataSet1.Insert;   // burda sorun yok
dm.IBDataSet1TIP.Value:='A';
dm.IBDataSet1KIMDEN.Value:= kFR;
dm.IBDataSet1BILDID.Value:=cbildirimid;
dm.IBDataSet1UC.Value:= cevapdataUC.Value;
dm.IBDataSet1GTIN.Value:=cevapdataGTIN.Value;
dm.IBDataSet1SN.Value:=cevapdataSN.Value;
try
dm.IBDataSet1.Post;

finally
//dm.IBStoredProc1.UnPrepare;
end;

  formgiris.cevapdata.Next;
 end;
 //dm.IBTransaction1.Commit;
 LabelFM.Caption:='Alım Bildirim Sonucu Kaydedilmiştir.';
end;

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

Re: Tabloya insert

Mesaj gönderen aslangeri »

s.a.
stored procedurede prepare işlemini parametrelere değer attıktan sonra yap.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla