En son kayıtı yeni kayıta kopyalamak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Gk_imptob
Üye
Mesajlar: 84
Kayıt: 01 Kas 2005 12:34

En son kayıtı yeni kayıta kopyalamak

Mesaj gönderen Gk_imptob »

Herkese merhaba.Çok soru soruyorum kusuruma bakmayın.Ben FB Db kullanıyorum.Delphide 7.0 yaptığım programda 1 günde girilen kayıtların hepsi bir kayıt haricinde aynı.Ben programı yeni kayıt oluşturduğum zaman kullanıcı aynı kayıtları elle girmesin diye bir buton yaratıp en son kaydın kopyasını yeni kayıt açtığım filedlara kopyalama yapmasını istiyorum.Bunu nasıl yapabilirim Delphitürkiye form offline çok inceledim ama bir şey bulamadım. Teşekkür ediyorum saygılar.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Bunun için 2 ayrı dataset kullanman lazım. Kodunda şu şekilde olmalı.

Kod: Tümünü seç

IBDataset1.Append;
IBDataset1.FieldByName('alan1').AsInteger := IBDataset2.FieldByName('alan1').AsInteger;
IBDataset1.FieldByName('alan2').AsString := IBDataset2.FieldByName('alan2').AsString;
....
IBDataset1.Post;
2. bir yolda Insert sql kodu ile yapabilirsin, ama bu sefer dataseti kapatıp açmak gerekebilir. IBSQL kullanabilirsin.

Kod: Tümünü seç

INSERT INTO TABLO (ALAN1, ALAN2) VALUES (alan1_değeri, alan2_değeri)
şeklinde bir SQL cümlesi oluşturman lazım.

Kolay gelsin.
ylmz
Üye
Mesajlar: 110
Kayıt: 18 Mar 2005 02:32
Konum: Antalya

Mesaj gönderen ylmz »

merhaba,

dataset i en son kayıt üzerine konumlandırdıktan sonra;

Kod: Tümünü seç

procedure......
var
  Cogalt: array [0..255] of Variant;  //en fazla 256 alanlı tablolar
  sayac: Integer;
begin
  with Dataset do
  begin
     for sayac := 0 to FieldCount - 1 do 
         cogalt[sayac] := fields[sayac].asvariant;
      insert;
      for sayac := 0 to FieldCount - 1 do 
         fields[sayac].asvariant := Cogalt[sayac];
     //primary key alanın varsa değiştir post et.

  end;
end;
Gk_imptob
Üye
Mesajlar: 84
Kayıt: 01 Kas 2005 12:34

Mesaj gönderen Gk_imptob »

Sevgili ylmz arkadaşım senin dediğini yaptım bütün fieldları aynen kopyalıyor ve bu benim işime gelmiyor.Örneğin benim kod,wono,batchno ve ağırlık fieldlarım var.Ben yeni kayıt dediğimde bir önceki kod,wono,bacthno bilgileri gelsin farklı bilgi olan ağırlık bilgisini ben girip bilgiyi kaydedeyim.Adminin verdiği komutlarla ilgili örneklere baktım ve kafam çok karıştı nasıl yapacağımı pek anlayamadım. :oops:
ylmz
Üye
Mesajlar: 110
Kayıt: 18 Mar 2005 02:32
Konum: Antalya

Mesaj gönderen ylmz »

merhaba,

butun alanları yeni kayıda kopyaladıktan sonra post etmeden önce istediğiniz fieldların içeriğini değiştirebilirsiniz.


(zaten koda da comment eklemiştim.sadece primary key değil değiştirmek istediğiniz tüm fieldları değiştirin.)

kolay gelsin.
En son ylmz tarafından 03 Mar 2006 05:05 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
önce bilgilerin girileceği pencereyi hazırla.
ordan kullanıcılar bilgileri girsin.
tabi burdaki kontroller db olmayacak.
sonra ta tablodan appendrecord komutunu vererek yapabilirsin.

Kod: Tümünü seç

tabloadi.appendrecord([tabloadialanadi.asdatatipi,degisken1,degisken2])
şeklinde olabilir.
dikkat etmen gereken nokta appendrecord komutun verdiğin bilgiler
tablonun fieldlistesindeki ile aynı olmalı.

kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla