ADO Sınıfı ile Bağlantı Hakkında Birkaç Soru??

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

ADO Sınıfı ile Bağlantı Hakkında Birkaç Soru??

Mesaj gönderen R.K. »

İyi çalışmalar arkdaşlar öncelikle Ramazanın ayının hepinize bereket getirmesi dileğiyle.
Codegear 2009 versiyonu kullanıyorum ve ADO ile acces veritabanı bağlantısı yapıyorum. Öğrenmek istediklerime gelince.
1. Master ve detail olarak 2 tablom var. Access kısmında ilişkileri kullanaran gerekli alanlarla birbirine bağlı bu tablolar. MASTER_ID ve DETAIL_ID alanları autoinc alan.
TBL_MASTER
----MASTER_ID
----TARIH
----SERVIS

TBL_DETAIL
---DETAIL_ID
---MASTER_ID
---PERSONEL
---MALZEME
Tablolara erişim içinde ADODataSet nesnesini kullanıyorum. Detail tablonun (ADODataSet nesnesinin) datasource özelliğinİ Master ADODataSetin DataSource nesnesine bağladım. Master-detail yapı için bu gerekli sanırım. Kayıt çekerken sorun yok ama kayıt eklerken ne yapmam gerektiğini tam anlayamadım. Şöyle düşünün. ADODataSet nesnelerine çift tıklayarak statik ve lookup alanları oluşturdum. Sonra bunları bir form üzerine sürükledim ve butonları ekledim. Burdaki butona basınca master tabloyu mu insert moduna geçiricem yoksa detail tabloyu mu?

2. Diyelim ki veribilinçli nesneleri kullanmadım ve diğer nesnelerin içini bendoldurdum (combobox, listbox...). Burda da yapmam gereken kaydet düğmesine basınca önce master tabloyu kaydetmek, master tabloya kayıttan sonra oluşan MASTER_ID' yi almak ve bunu Master ADODataSet nesnesinin After Post olayında Detail tabloya eklemek mi olmalı? Sizler nasıl yapıyorsunuz. Yardımcı olursanız sevinirim. Özellikle 1. şekilde anlattığım yöntemde olursa daha kolay olur ama olması gereken 2. yöntemse biraz açıklarsanız sevinirim. Teşekkürler..
R.K.
Üye
Mesajlar: 82
Kayıt: 02 Nis 2007 12:05
Konum: Adana

Re: ADO Sınıfı ile Bağlantı Hakkında Birkaç Soru??

Mesaj gönderen R.K. »

Gönderdiğiniz linkte aslangeri hocam bunları demiş ama...
arkadaşım ibdataset 1i post ettiğin zaman kayıt refresh oluyor. bu yüzden ibdataset2 yide refreshliyor. ondan sebeb ibdataset2 edit/insert modundan çıkıyor.
Normalde önce master kaydı insert--> post edersiniz. sonra detail tabloyu insert --> post edersiniz.
Anladığım kadarı ile siz ikisine aynı anda insert komutunu veriyorsunuz ancak ibdataset1 post olduğu zaman ibdataset2 yi de refreşlediği için ibdataset2 yi post yapamıyorsunuz?
işlemlerin sırasını düzeltin derim.
Ben yine bu şekilde yapamadım. Yani işlemlerimde bir yanlışlık var ama nerde bilmiyorum. Nesneleri dediğim şekilde bağladım ama olayları nasıl çağıracağımı çözemedim ve hat veriyor. Yani Master-Detail alanlarım form üzerinde duruyorken yeni butonuna tıklayarak master tabloyu dsetIslemAna.Append ile insert moduna geçiriyorum. Gerekli girişleri yapıp kaydet butonuna basınca dsetIslemAna.Post komutuyla master tabloyu kaydediyorum. Iste bu arada bir yerde hangi olayları kullanmalıyım ki detail tablomun girişleri de kaydedilsin. dsetIslemAna.BeforeInsert olayda detail tabloyu append moduna geçiriyorum ve dsetIslemAna.AfterPost olayından sonra da detail tabloyu post ediyorum fakat hep hata alıyorum :( Olması gereken nedir arkadaşlar yardımcı olursanız sevinirim...
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: ADO Sınıfı ile Bağlantı Hakkında Birkaç Soru??

Mesaj gönderen aslangeri »

s.a.
tam alıntı yaptığınız yerdeki hata gerçekleşiyor sizdede.
şimdi olayları adım adım inceleyelim.
1. master tabloyu insert moduna geçirdiniz.
2. master tablonun before inserti çalıştı ve detay tablonuzda insert moduna geçti.
3.ilgili alanlara bilgi girişlerini yaptıniz
4.kaydet düğmesine basıldı
5.master tablo kaydedildi.
6.master tabloda değişiklik olduğu için detay tablo refresh edildi.(bu durumda detaytablo insert modundan çıkıyor)
7.master tablonun afterpostundaki detaypost çalışıyor.
HATA:tablo edit yada insert modunda değil.
(Gerçi senin aldığın hata bumu bilemiyorum ama muhtemelen bunla alakalı birşeyler olması lazım. aldığın hata mesajını yazmamışsın.).
yapman gereken. önce master tabloyu insert post edeceksin sonra detay tabloyu insert post edeceksin. master tablonun before insert ve after postunda ki işlemleri silmen lazım tabiki.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla