Dbgrid de Seçilen Kayıtları Başka Table'a Aktarmak

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
Kullanıcı avatarı
ömer faruk
Üye
Mesajlar: 97
Kayıt: 29 Eki 2003 09:34
Konum: Bursa
İletişim:

Dbgrid de Seçilen Kayıtları Başka Table'a Aktarmak

Mesaj gönderen ömer faruk »

Selamunaleykum
İpuçlarında arattırdım istediğimi buldum Dbgirid de seçilen kayıtlara ulaşmak ama bunları başka table nasıl aktaracağımı bilmiyorum yardımcı olursanız sevinirim.(ibdataset kullanıyorum). Kolay gelsin.
İpuçlarındaki kod

Kod: Tümünü seç

Bir DBGrid’de birden fazla seçilen kayıtlara ulaşmak 

Eğer grid’in MultiSelect özelliği True yapılmışsa ve grid’den rastgele iki veya daha fazla kayıt seçilmişse seçilen kayıtlara aşağıdaki kod yardımıyla ulaşabilirsiniz.

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Liste: TBookMarkList;
  i: integer;
  Kayit: TBookMark;
begin
  Liste:=DBGrid1.SelectedRows;
  for i:=0 to Liste.Count-1 do begin
    Kayit:=TBookMark(Liste.Items[i]);
    Table1.GotoBookmark(Kayit);
end;
end;
Hakimiyet ALLAH' ındır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Bu iş için değişik yöntemler teklif edilebilir. Aklıma gelen seçilen kayıtlar arasında döngü ile dolaşırken aktarılacak tabloya IBDataset2.Append; ile boş bir kayıt ekleyip alanları seçilen alanlarla doldurduktan sonra IBDataSet2.Post; ile kayıt kayıt aktarılabilir.

İkinci aklıma gelen yine döngü ile bu sefer Primary Key (PK) alanı bir string de aralarına virgül koyup toplatılarak tek bir insert komutu ile aktarma yapılabilir.

Kod: Tümünü seç

INSERT INTO tablo2 VALUES (ALAN2_1, ALAN2_2, ...) SELECT ALAN1_1, ALAN1_2, ... FROM tablo1
WHERE PK_ALANI IN (string_değişken)

string_değişken şu yapıda olmalı: '45, 23, 7, 55' gibi..
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla