ClientDataSet 'in güzel özelliklerinden bir taneside master detail bağlantısının kolaylıkla oluşturulabilmesi. Master/Detail yapısı indexleme mantığına dayanmaktadır. Bir tablodan alınan kısıt diğer tabloda indexlenerek gösterilir. Master/Detail özelliğini göstermek için yine küçük bir uygulama yapıcam. Bu seferki uygulamamızın adı BorçTaksit uygulaması olacak.
Peki bu uygulama ne yapacak? Uygulama çok kurumsal olmayan küçük işletmeler ya da kişiler için bir uygulama olacak. Örneğin bir dişçisiniz ve özel muayeneniz var. Gelen hastalarınızın kayıtlarını bu küçük uygulamada tutarak hangi hastanızın ne kadar borcu var, kaç taksite borcu böldünüz, ne kadarını ödemiş ne kadarı kalmış bu ay ne kadar para gelmesi bekleniyor gibi hem ileriye dönük daha sağlıklı bir görüş kazanacak hemde takip etmesi daha kolay olacaktır.
Master/Detail bağlantısını anlatacağım için sadece o kısmı ekledim. Mantığı kavramak açısından güzel bir başlangıç olacaktır. Forma
2 adet DBGrid
2 adet DBNavigatör
ekledim. File > New > other > Delphi Files > DataModule yaratarak içine
2 adet ClientDataSet
2 adet DataSource
koydum ve veritabanlarımı yarattım. Eğer clientdataset veritabanı oluşturmayı bilmiyorsanız; ClientDataSet Oluşturma ve Yönetme yazısından öğrenebilirsiniz.
Dikkat ettiyseniz iki tabloda da bir adet id tanımladım. İki id de aslında Müsteri leri temsil etmektedir. Her müsteri için farklı bir id kullanmamız lazım. BorcTaksit tablosuna eklememin sebebi bu id sütunu ile iki tabloyu birbirine bağlamak. Aslında yaptığım olay SQL de uzakanahtar yaratmak.
Artık işim bitti sayılır. Tek yapmam gereken gerekli bağlantıları yapmak. BorcTaksit tablosunun MasterSource 'sini Müsteri tablosunun DataSource 'si ile eşleştiriyorum. Sonrada Masterfileds 'daki üç noktaya tıklıyorum.
Artık Master/ Detail 'imiz hazır. Bunu bir kaç veri girerek deneyelim.
Görüldüğü gibi artık müsteri tablosunda hangi kaydı tıklarsam borc tablosunda o müsteriid ye uyan kayıtlar gelecektir. Uygulamanın başka bilgisayarlarda düzgün çalışması için ana forma
uses: midaslib;
DataModule formuna:
uses: vcl.forms;
ve son olarakta DataModule:
procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
borctaksit.FileName:=ExtractFilePath(Application.ExeName )+'borctaksitdb.cds';
borctaksit.Active:=true;
müsteri.FileName:=ExtractFilePath(Application.ExeName )+'müsteridb.cds';
müsteri.Active:=true;
end;
eklemeyi unutmayın.
Okuduğunuz İçin Teşekkür Ederim
Hakan UÇAR
İstatistikçi ve Amatör Programcı
İçerikler Tamamen Ücretsiz Olup Özgün Anlatımdır Paylaşırken Kaynak Belirtiniz Lütfen.
Uygulamanın kaynak kodlarına göz atmak isterseniz Yandex Diskimden inderebilirsiz.
0 yorum:
Yorum Gönder