dbgrid to dbgrid

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

dbgrid to dbgrid

Mesaj gönderen ALUCARD »

arkadaşlar merhaba

ben bi dbgridde 1 den fazla seçtiğim stırları
başka bir dbgride aktarmak istiyoırum.
veritabanı olarak advantage kullanıyorum.
ads nin bacthmowe sini bi türlü kullanmayı beceremedim.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Merhaba,

Bunun için Dbgrid nesnesinin SelecTedRows özelliğinden yararlanacaksın. İlk önce Seçili kayıtların 1 veya 1 den fazla olup olmadığını kontrol ettir. Secili kayıtlar 1 veya 1 den fazlaysa bir for döngüsüyle olayını halledersin.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

teşekkur ederim hemen deneyeceğim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Yanlış bir durum olmasın DBGrid de kayıt yok! bağlı bulunduğu DataSet te var. DataSet in den faydalanıp seçili olan kayıtları ikinci bir DBGrid in DataSet ine dolaysıyla ikinci bir tabloya atıp önceki tablodan silebilirsiniz. Belki yapmak istediğiniz budur da aceleyle soru şekli fazla yüzeysel ve anlamsız oluyor:)

Delphi IDE DBGrid1.SelectedRows helpinden

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
  s: string;
begin
  if DBGrid1.SelectedRows.Count>0 then
    with DBGrid1.DataSource.DataSet do
      for i:=0 to DBGrid1.SelectedRows.Count-1 do
      begin
        GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
        for j := 0 to FieldCount-1 do
        begin

          if (j>0) then s:=s+', ';
          s:=s+Fields[j].AsString;
        end;
        Listbox1.Items.Add(s);
        s:= '';
      end;
end;
seçilen kayıtları bu şekilde bulup yukarıda tarif ettiğim şekilde yapabilirsin.
Ayrıca DBGrid in Options larından MultiSelect ini True yapmalısın.

Kolay gelsin.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

hocam öncelikle ilginize teşekkur
yanlız benim yapmak istediğim biraz daha farklı


ben aslında bir tablodaki kayıtları başka bir tablonun sonuna (append) methodu ile eklemek istiyorum.

paradoxta bunu bachmowe ile yapabiliyorum ama advantage kullandığım için sorun biraz buyudu galiba.

yani seçili kayıtları listwiewe almam benim işime yaramıyor.

yapmak istediğim işi şöyle anlatayım:

ben işlemi a tablosun da yaptırıyorum ama aslın da gerçek kayıtlar b tablosunda tutuluyor.

Yapılmak istenen yapılıp kaydet tuşuna basılınca verilerin b tablosunun sonuna eklenmesi lazım

Önemli ben advantage kullanıyorum
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

@rsimsek size çok uygun bir kod yazmış, geriye kalan biraz zihin jimlastiği yapıp bunu kendi istediğiniz şekle dönüştürmek... :idea:
ALUCARD yazdı:ben aslında bir tablodaki kayıtları başka bir tablonun sonuna (append) methodu ile eklemek istiyorum.
- Kendi cümlenizle demişsiniz... Append yapmak istiyorum demişsiniz...

Kod: Tümünü seç

        for j := 0 to FieldCount-1 do 
        begin 
          if (j>0) then s:=s+', '; 
          s:=s+Fields[j].AsString; 
        end; 
kısmında ufak bir modifikasyon ile istediğinize kavuşabilirsiniz...

Kod: Tümünü seç

        AdvantageTable.Append;
        for j := 0 to FieldCount-1 do 
        begin 
          AdvantageTable.Fields[j].Value := Fields[j].Value;
        end; 
- Yukardaki kod her iki tablonun alan tipleri bire bir eşitse çalışır... Farklı alanları aktarmak isterseniz döngü yerine normal eşitlikleri koyun olsun bitsin... :idea:
Resim
Resim ....Resim
Cevapla