Tablodan tabloya insert into yardım..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Tablodan tabloya insert into yardım..
Sevgili arkadaşlar,
FB SQL editorde TABLO1'den TABLO2'ye KIMLIKNO'su 1 olanları gönderdiğim SQL satırını Delphide IBQUERY le çalıştıramadım.Bu konuda sizlerden yardım rica ediyorum.Kod örnekleri aşşağıdaki gibidir.
FB'de yazdığım komut.(Bu düzgün çalışıyor)
insert into TABLO2 ("ADI","SOYADI","KIMLIKNO") SELECT "ADI","SOYADI", "KIMLIKNO" TABLO1 WHERE KIMLIKNO=1 bu şekilde SQL cümleciğini yazdığım zaman TABLO1 deki kimlikno su 1 olanları tablo2 ye gönderiyor.
Delphide yazdığım komut satırı.(Bu çalımadı)
procedure TDENEME.Button1Click(Sender: TObject);
var
KIMLIKNO:integer;
ADI,SOYADI:String;
begin
KIMLIKNO:=IBDataSet1.FieldByName('KIMLIKNO').AsInteger;
ADI:=IBDataSet1.FieldByName('ADI').AsString;
SOYADI:=IBDataSet1.FieldByName('SOYADI').AsString;
IBQuery1.Close;
IBQuery1.UnPrepare;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('insert into TABLO2');
IBQuery1.SQL.Add('(ADI,SOYADI,KIMLIKNO)values');
IBQuery1.SQL.Add('(:ADI,:SOYADI,:KIMLIKNO)');
//IBQuery1.SQL.Add('select * from Technical_PR_Tbl_2 WHERE PO_CREATE="1"'); Buraya böyle bir komut satırı yazdım fakat çalışmadı
IBQuery2.Prepare;
IBQuery1.ParamByName('KIMLIKNO').AsInteger:=KIMLIKNO;
IBQuery1.ParamByName('ADI').AsString:=ADI;
IBQuery1.ParamByName('SOYADI').AsString:=SOYADI;
IBQuery1.ExecSQL;
end;
FB SQL editorde TABLO1'den TABLO2'ye KIMLIKNO'su 1 olanları gönderdiğim SQL satırını Delphide IBQUERY le çalıştıramadım.Bu konuda sizlerden yardım rica ediyorum.Kod örnekleri aşşağıdaki gibidir.
FB'de yazdığım komut.(Bu düzgün çalışıyor)
insert into TABLO2 ("ADI","SOYADI","KIMLIKNO") SELECT "ADI","SOYADI", "KIMLIKNO" TABLO1 WHERE KIMLIKNO=1 bu şekilde SQL cümleciğini yazdığım zaman TABLO1 deki kimlikno su 1 olanları tablo2 ye gönderiyor.
Delphide yazdığım komut satırı.(Bu çalımadı)
procedure TDENEME.Button1Click(Sender: TObject);
var
KIMLIKNO:integer;
ADI,SOYADI:String;
begin
KIMLIKNO:=IBDataSet1.FieldByName('KIMLIKNO').AsInteger;
ADI:=IBDataSet1.FieldByName('ADI').AsString;
SOYADI:=IBDataSet1.FieldByName('SOYADI').AsString;
IBQuery1.Close;
IBQuery1.UnPrepare;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('insert into TABLO2');
IBQuery1.SQL.Add('(ADI,SOYADI,KIMLIKNO)values');
IBQuery1.SQL.Add('(:ADI,:SOYADI,:KIMLIKNO)');
//IBQuery1.SQL.Add('select * from Technical_PR_Tbl_2 WHERE PO_CREATE="1"'); Buraya böyle bir komut satırı yazdım fakat çalışmadı
IBQuery2.Prepare;
IBQuery1.ParamByName('KIMLIKNO').AsInteger:=KIMLIKNO;
IBQuery1.ParamByName('ADI').AsString:=ADI;
IBQuery1.ParamByName('SOYADI').AsString:=SOYADI;
IBQuery1.ExecSQL;
end;
Re: Tablodan tabloya insert into yardım..
Çalışmadı da ne hata verdi.Gk_imptob yazdı: //IBQuery1.SQL.Add('select * from Technical_PR_Tbl_2 WHERE PO_CREATE="1"'); Buraya böyle bir komut satırı yazdım fakat çalışmadı

Çalışmaması normal iç içe select gibi olmuş bu anlaşılan.

ayrıca degerleri IBDataSet1 den alıyorsun where nereye çekiyorsunuz

IBDataSet1. e where ile kısıt ver.
Inserti While not eof ile döngüye sokarak yaz.
Birde Field adları ile Parametreleri aynı isimde vermez isek daha iyi olur diye biliyorum.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Tablodan tabloya insert into yardım..
Sayın Conari cevabınız için teşekkürler.
1nci sorunuz ("Çalışmadı ne hata verdi") demişsiniz.Ben butona bastığım zaman hiç bir hata vermedi.İstediğim dataları yani kimliknosu 1 olanları diğer tabloya göndermedi.Birşey yapmadı yani...
3ncü sorunuza cevap.Ben tablomu IBQUERY bağlamıştım.Onunda SQL stringi select * from Tablo1
siz insert while not eof döngüsü deyince ben birden durdum.Nasıl yapcam diye düşünmeye başladım.
Birde siz "Field adları ile Parametreleri aynı isimde vermezsek daha iyi olur" demişsiniz.Tam bu kısmı da anlayamadım.Forumda bir çok örnekte herkes böyle yapmış diye bende böyle yapdım.
Teşekkürler.
1nci sorunuz ("Çalışmadı ne hata verdi") demişsiniz.Ben butona bastığım zaman hiç bir hata vermedi.İstediğim dataları yani kimliknosu 1 olanları diğer tabloya göndermedi.Birşey yapmadı yani...
3ncü sorunuza cevap.Ben tablomu IBQUERY bağlamıştım.Onunda SQL stringi select * from Tablo1
siz insert while not eof döngüsü deyince ben birden durdum.Nasıl yapcam diye düşünmeye başladım.
Birde siz "Field adları ile Parametreleri aynı isimde vermezsek daha iyi olur" demişsiniz.Tam bu kısmı da anlayamadım.Forumda bir çok örnekte herkes böyle yapmış diye bende böyle yapdım.
Teşekkürler.
Re: Tablodan tabloya insert into yardım..
Pardon ben birden fazla kayıt döner diye While döngüsü ile insert et dedim ama TC no tek olacağı için sanırım tek kayıt dönecek.
buradan önce IBdataset1 SELECT "ADI","SOYADI", "KIMLIKNO" TABLO1 WHERE KIMLIKNO=1 bunun ile aynı sonucu döndürüyormu? döndürüyor ise ;
bu kod işlemi yapmalı.
Parametre tiplerini kontrol edebilirsin.
Field ile parametre isimleri aynı olmasın diye duymuş veya okumuştum. Şuan kaynak hatırlamıyorum aklıma gelirse veya bulabilirsem burada yazarım.
Kod: Tümünü seç
begin
KIMLIKNO:=IBDataSet1.FieldByName('KIMLIKNO').AsInteger;
ADI:=IBDataSet1.FieldByName('ADI').AsString;
SOYADI:=IBDataSet1.FieldByName('SOYADI').AsString;
Kod: Tümünü seç
IBQuery1.Close;
IBQuery1.UnPrepare;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('insert into TABLO2');
IBQuery1.SQL.Add('(ADI,SOYADI,KIMLIKNO)values');
IBQuery1.SQL.Add('(:ADI,:SOYADI,:KIMLIKNO)');
IBQuery1.Prepare;
IBQuery1.ParamByName('KIMLIKNO').AsInteger:=KIMLIKNO;
IBQuery1.ParamByName('ADI').AsString:=ADI;
IBQuery1.ParamByName('SOYADI').AsString:=SOYADI;
IBQuery1.ExecSQL;
end;
Parametre tiplerini kontrol edebilirsin.
Field ile parametre isimleri aynı olmasın diye duymuş veya okumuştum. Şuan kaynak hatırlamıyorum aklıma gelirse veya bulabilirsem burada yazarım.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Tablodan tabloya insert into yardım..
Sayın Conari dediğinizi yaptım fakat olmadı.
Galiba ben eksit anlatıyorum.KimlikNo, TCKimlikNO değil.Bu konuda özür.Bunu güvenlikte giriş, çıkış yapan kişilerin kimlikno gibi düşünün.Yani aynı kimlik no bu önemli birden fazla kişiye verilebiliyor.Amaçta bu zaten.Örneğin 2 nolu kimlik nosunu kimler almışsa bunları TABLO2 ye gönder gibi.
Formumda 1 ad. cxgrid var. Ben bunu IBDATASET1, DAtasourcele bütün kayıtları gösterecek şekilde ayarladım.Inser into işlemini yapmak için formuma birtane IBQUERY koydum.Onun SQL stringine dediğiniz gibi select "adı","soyadı" from tablo" where kimlikno=1 yazdım fakat istediğim kayıtları select edemedim diğer tabloya gönderme yapamadım.
Teşekkürler.
Galiba ben eksit anlatıyorum.KimlikNo, TCKimlikNO değil.Bu konuda özür.Bunu güvenlikte giriş, çıkış yapan kişilerin kimlikno gibi düşünün.Yani aynı kimlik no bu önemli birden fazla kişiye verilebiliyor.Amaçta bu zaten.Örneğin 2 nolu kimlik nosunu kimler almışsa bunları TABLO2 ye gönder gibi.
Formumda 1 ad. cxgrid var. Ben bunu IBDATASET1, DAtasourcele bütün kayıtları gösterecek şekilde ayarladım.Inser into işlemini yapmak için formuma birtane IBQUERY koydum.Onun SQL stringine dediğiniz gibi select "adı","soyadı" from tablo" where kimlikno=1 yazdım fakat istediğim kayıtları select edemedim diğer tabloya gönderme yapamadım.
Teşekkürler.
Re: Tablodan tabloya insert into yardım..
Bu şekilde alabilmeniz lazım. IBQuery1 hangi vt ye bağlı onu kontrol edin.
Kod: Tümünü seç
IBQueryDeneme.SQL.clear;
IBQueryDeneme.SQL.Add('SELECT ADI,SOYADI, KIMLIKNO from TABLO1 WHERE KIMLIKNO=1');
IBQueryDeneme.open;
//bunun istediğimiz listeyi vermesi gerekmekte...
//Ondan sonra her kayıt için döngü
while not(IBQueryDeneme.Eof) do
begin
KIMLIKNO:=IBQueryDeneme.FieldByName('KIMLIKNO').AsInteger;
ADI:=IBQueryDeneme.FieldByName('ADI').AsString;
SOYADI:=IBQueryDeneme.FieldByName('SOYADI').AsString;
//değişkenleri ata----------------------
IBQuery1.Close;
IBQuery1.UnPrepare;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('insert into TABLO2');
IBQuery1.SQL.Add('(ADI,SOYADI,KIMLIKNO)values');
IBQuery1.SQL.Add('(:ADI,:SOYADI,:KIMLIKNO)');
IBQuery1.Prepare;
IBQuery1.ParamByName('KIMLIKNO').AsInteger:=KIMLIKNO;
IBQuery1.ParamByName('ADI').AsString:=ADI;
IBQuery1.ParamByName('SOYADI').AsString:=SOYADI;
IBQuery1.ExecSQL;
end;
IBQueryDeneme.Next;
end;
Bir kelimenin anlamını öğretsen bile yeter..



Re: Tablodan tabloya insert into yardım..
Sevgili conari vermiş olduğun kodları kendi programıma çok basit bir şekilde düzenledim.Fakat kafayı yemek üzereyim tablo1 den tablo2 ye insert işlemi yapamıyorum.Sıyırdım gitti hatadada vermiyor.Gidiyorum tablo 2ye bakıyorum hiç bir şey kopyalamamış.
düzenlediğim komut aşşağıdaki gibidir.
procedure TForm2.Button2Click(Sender: TObject);
var
description:string;
begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select DESCRIPTION from technical_pr_tbl_2 where po_create=1');
IBQuery1.Open;
IBQuery1.First;
while not IBQuery1.eof do
begin
description:=IBQuery1.fieldbyname('description').AsString;
IBQuery2.Close;
ibquery2.SQL.Clear;
ibquery2.SQL.Add('insert into Technical_PO_Tbl_2');
ibquery2.SQL.Add('(description)values');
IBQuery2.SQL.Add('(:description)');
ibquery2.ParamByName('description').AsString:=description;
IBQuery1.Next;
ibquery2.ExecSQL;
end;
end;
düzenlediğim komut aşşağıdaki gibidir.
procedure TForm2.Button2Click(Sender: TObject);
var
description:string;
begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select DESCRIPTION from technical_pr_tbl_2 where po_create=1');
IBQuery1.Open;
IBQuery1.First;
while not IBQuery1.eof do
begin
description:=IBQuery1.fieldbyname('description').AsString;
IBQuery2.Close;
ibquery2.SQL.Clear;
ibquery2.SQL.Add('insert into Technical_PO_Tbl_2');
ibquery2.SQL.Add('(description)values');
IBQuery2.SQL.Add('(:description)');
ibquery2.ParamByName('description').AsString:=description;
IBQuery1.Next;
ibquery2.ExecSQL;
end;
end;
Re: Tablodan tabloya insert into yardım..
IBQuery1.Open;
dediğinizde
IBQuery1.recordcount ile kayıt sayısına bir bakarmısınız kayıt varmı?
Parametreli gönderimde birde problem olabilir parametresiz kullanıp deneyin.
dediğinizde
IBQuery1.recordcount ile kayıt sayısına bir bakarmısınız kayıt varmı?
Parametreli gönderimde birde problem olabilir parametresiz kullanıp deneyin.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Tablodan tabloya insert into yardım..
Sevgili conari kodlarımı hiç değiştirmeden sadece IBQuery1.Open; dan sonra
IBQuery1.recordcount koydum.Bana kaçtane aktarmak istediğim kayıt sayısını getirdi ve ondan sonra seçili kayıtları aktardı kod çalıştı
.iki gündür sürekli aynı kodlarla çalışıyorum ve bir türlü diğer tabloya kayıt atamıyor kafayı yiyordum.recourdcount dan sonra kayıtlar gitmeye başladı.Çok ilginç şaştım kaldım anlayamadım.
Yardımlarından dolayı sana sonsuz teşekkür ederim.
IBQuery1.recordcount koydum.Bana kaçtane aktarmak istediğim kayıt sayısını getirdi ve ondan sonra seçili kayıtları aktardı kod çalıştı

Yardımlarından dolayı sana sonsuz teşekkür ederim.
Re: Tablodan tabloya insert into yardım..

İlginç bir anlam veremedim.

İyi çalışmalar.
Bir kelimenin anlamını öğretsen bile yeter..


