Detail de Birden Çok Kayıt Girdikten Sonra Kaydetme?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
R.K.
Üye
Mesajlar: 82
Kayıt: 02 Nis 2007 12:05
Konum: Adana

Detail de Birden Çok Kayıt Girdikten Sonra Kaydetme?

Mesaj gönderen R.K. »

MErhaba arkadaşlar. Aşağıda ki şekilde bir formum var. DbGrid'in üst tarafı ana tabloya DbGrid detay tabloya bağlı. Böyle bir form hazırladıktan sonra detay tabloya birden çok kayıt girip alttaki kayıt butonuna basınca ana ve detay tablomun kaydedilmesini istiyordum. Ama detayda ikince satıra geçince otomatik olarak DbGrid'in bağlı olduğu tabloyu kaydediyor. Bense bu şekilde değil tüm kayıtlardan girildikten sonra kaydet butonuna basılınca olmasını istiyorum. Aramalarım tam olarak bulamadım istediğimi. Ara sıra VS C#' da kullanıyorum. Orda dataset nesnesi üzerinden vt işlemlerinizi yaparsanız önce datasete kaydedilip siz istediğiniz zaman veritabanındaki tabloya değişiklikleri yansıtabiliyorsunuz. Sanırım delphi ile aynı şansım yok peki böyle bir sorunu nasıl çözerim. Teşekkürler cevaplarınız için şimdiden...



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

Re: Detail de Birden Çok Kayıt Girdikten Sonra Kaydetme?

Mesaj gönderen aslangeri »

s.a.
temptable kullanrak halledebilirsiniz.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
R.K.
Üye
Mesajlar: 82
Kayıt: 02 Nis 2007 12:05
Konum: Adana

Re: Detail de Birden Çok Kayıt Girdikten Sonra Kaydetme?

Mesaj gönderen R.K. »

Hocam temptable dan kastınız vt de aynı yapıda bir tablo daha oluşturup işlemleri orada yapıp benim kaydet butonuna basmamla normal tabloya taşımam mı? Sanırım temp tabloda işlemler yapıldıktan ve veriler diğer tabloya aktardıktan sonra temp tablodaki kayıtlarıda vt şişmesin diye silmem lazım. Doğru anlamışım hocam?
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: Detail de Birden Çok Kayıt Girdikten Sonra Kaydetme?

Mesaj gönderen Lost Soul »

memtable (bellekte çalışan tablo) diye araştırın.
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: Detail de Birden Çok Kayıt Girdikten Sonra Kaydetme?

Mesaj gönderen tuna »

tarnsaction kullanabilirsin.

Verileri kaydetmeye başlamadan önce connection nesnesine begintransaction diyerek başlarsın.

Örnek veriyim: (ADO ve Ms Sql kullandığını varsayıyorum.)

ADOConnection1.Begintrans ---> yeni kayıt butonuna ekle

ADOConnection1.CommitTrans ---> Kaydet butonundaki işlemlerin en sonuna ekle.

ADOConnection1.Rollback ---> Vazgeç butonuna ekle.

Böylece sen kaydet diğene kadar veriler asla tabloya fiziksel olarak yazılmaz.
Sen kaydet demeden programı kapatsan bile rollback olur. Yada vazgeç değinde rollback çalışır.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Detail de Birden Çok Kayıt Girdikten Sonra Kaydetme?

Mesaj gönderen emin_as »

Clientdataset ile provider kullanarak yapabilirsin.

http://edn.embarcadero.com/article/20567
R.K.
Üye
Mesajlar: 82
Kayıt: 02 Nis 2007 12:05
Konum: Adana

Re: Detail de Birden Çok Kayıt Girdikten Sonra Kaydetme?

Mesaj gönderen R.K. »

Cevaplarınız için teşekkürler. En kolay yöntem olarak tuna hocamın dediği transaction yöntemini kullandım. Fakat orda da şu şekilde bir sorun yaşıyorum. Detay kayıtta tek kayıt eklersem sorunsuz bir şekilde master tablodan aldığım birincil alanı detaya yabancı alan olarak girebiliyorum. Fakat detayda birden çok kayıt olursa sadece en sonuncu detay kaydın yabancı anahar bölümüne ana tablodan aldığım alanı ekliyor. Bunun için ne yapabilirim? Aklıma şu geldi ama böyle birşey var mı bilmiyorum. Transaction başlatıp detaya kayıtları girmeye başlayıp detayda ikinci kayda geçtiğimde detayda 1 den fazla kayıt varsa (fiziksel tabloda değil hafızadaki transaction işleminde) her beforePost olayında ana tablodan alacağım anahtarı detaya yabancı anahtar olarak girmek. Fakat burda da hafızadaki sonlanmamış transaction işlemindeki detaydaki kayıt sayısını nasıl alacağımı bilmiyorum. Ne yapmalıyım transaction kullanırken yardımızı bekliyorum arkadaşlar...
R.K.
Üye
Mesajlar: 82
Kayıt: 02 Nis 2007 12:05
Konum: Adana

Re: Detail de Birden Çok Kayıt Girdikten Sonra Kaydetme?

Mesaj gönderen R.K. »

Arkadaşlar sorunu hallettim. detayQuery' nin beforePost olayında ana tablodan id alanını alıyorum ve kaydediyorum. En kolay çözüm bu oldu işe yaradı. Teşekkürler cevaplarınız için...
Cevapla