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
Tabloya insert
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Tabloya insert
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 

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Tabloya insert yine sorunlu
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:
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ç
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 ; ^
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;
Re: Tabloya insert
s.a.
stored procedurede prepare işlemini parametrelere değer attıktan sonra yap.
kolay gelsin.
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
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim