table'daki verileri aynı anda bir diğerine daha aktarma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
esraakarslan
Üye
Mesajlar: 28
Kayıt: 30 Haz 2004 02:24

table'daki verileri aynı anda bir diğerine daha aktarma

Mesaj gönderen esraakarslan »

Arkadaşlar benim sorunum şu table 1'de sadece mesela ad, soyad alanı var table2'de de ad, soyad alanı var benim istediğim mesela table1 üzerinden işlem yaptığımda kaydet dedikten sonra table2'ye de aynı verileri atması bir ayna görevi görmesi. Bunu nasıl yapabilirim. Bana yardımcı olabilirseniz memnun olurum. HErkese iyi çalışmalar
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Databaseniz nedir?

ib/fb ise bir query içine

Kod: Tümünü seç

insert into table2 select * from table1
diyerek table1 i table 2 ye atabilirsiniz.
Kolay gelsin...
esraakarslan
Üye
Mesajlar: 28
Kayıt: 30 Haz 2004 02:24

Mesaj gönderen esraakarslan »

veritabanım paradox bunda nasıl yapabilirim
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

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

Mesaj gönderen aslangeri »

S.A.
Tablonun before post olayını kullanabilirsin.
after insert ve after edit olaylarında tanımladığın global bir değişkeni set et.

Kod: Tümünü seç

Procedrue table1afterinsert.....
begin
  tablodurumu:=1;//1=insert modunda
end;
procedure table1afteredit....
begin
  tablodurumu:=2//2=edit modunda 3=browse modunda vs.
end;
tablodurumu değişkeninin durumunu iyi kontrol etmen lazım. aynı işlemi dataset.state ile de öğrenebilirsin ama afterpost sırasında edittenmi geldi yoksa inserttenmi geldi bilmen lazım. ona göre ikinci tabloda edit veya insert yapacaksın.
daha sonra table1 in after post olayında

Kod: Tümünü seç

procedure table1afterpost....
var
i:byte;
begin
  if tablodurumu=1 then
  begin
      //ikinci tabloya insert et 
      table2.insert;
      for i:=0 to table1.fields.count-1//yanlış hatırlamıyorsam böle bişi olacaktı     
      begin
          table2.fields[i].value:=table1.fields[i].value;
      end;
      table2.post;
  end; //insert durumunda
  if tablodurumu=2 then
  begin
     //ikinci tablo edit edilecek
    table2.locate({table2 de table1deki kayıtı bulduracaksın});
   table2.edit;
   //kayıtları güncelle
   table2.post;
  end;
end;
yeni kayıt ilaveyi ve güncellemeyide sql ilede yapabilrsin.
mantık olarak böle bişi olabilir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba arkadaşlar,

arkadaşımızın yapmak istediği uygulamayı bende yapmak istiyorum.

fb/ibx ve delphi 7 kullanıyorum.

yukarıdaki cevapları uygulamaya çalıştım ama başarılı olamadım.

iki tablom var table1 de sp yok, table2 de sp ler oluşturdum. harcamalar tablosu bu table2 ile ilişkili artırma azaltma işlemini yapıyorum.

table1 i veri giriş tablosu olarak tutmak ve kayıtlarını saklamak istiyorum. bu amaçla oluşturdum. burada aynı alanlar ve pk lerle oluşmuş olan tablo2 ye verilerin otomatik girmesini istiyorum. yani tek veri giriş formundan iki tabloya aynı anda veri girişi yapılacak. tablolar delphi tarafında birbiri ile bağlantılı, görsel açıdan table1 de dönem olarak 20041 dönemi görünüyorsa table2 de de aynı dönem görünüyor. bunu sql de where donemi=:donemi olarak atayarak ve table2 nin datasourcesini table1 in datasource sine yönlendirerek yaptım.

beforepost olayına

Kod: Tümünü seç

ibdataset2.fieldbyname('donemi').asinteger:=ibdataset1.fieldbyname('donemi').asinteger;
............
şeklinde alanları belirterek yazdım ama not in edit mode hatası aldım.
ve forumda arama yaparak cevap bulmaya çalıştım ama verilen örnekleri uygulayıp çözüm bulamadım. yardımcı olabilirmisiniz

not her iki tabloda IDNO ve DONEMI PK,NOT NULL. IDNO alanları autoinc dir. DONEMI alanını ortak kullanıyorum

teşekkürler.
kolay gelsin
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba arkadaşlar;

sorunumu şu şekilde hallettim;

Kod: Tümünü seç

ibdataset2.Append;
       ibdataset2.Edit;
       ibdataset2.FieldByName('DONEMI').AsInteger:=ibdataset1.fieldbyname('DONEMI').AsInteger;
       ..............
       ibdataset2.Post;
  ibdataset1.Transaction.CommitRetaining;

değerli vaktinizi aldığım için özür diler, kolaylıklar dilerim.
Cevapla