Arşiv Anasayfa Veritabanı Makaleleri
Sayfalar: 1
DBLookUpComboBox Gönderen: Fatih Tarih: 10 October 2005 01:41:37
Diğer Bir Verikümesindeki Bir Alanın Değerlerini Kullanarak Bu Değerlere göre başka bir verikümesindeki Bir alanın değerini ayarlar.

aşağıdaki gibi bir tablomuz olduğunu düşünelim.

Tablo Adı LOOK_ORNEK



Şimdi İli ve İlçe bölümlerinde Tüm İlleri ve buna bağlı ilçeleri Bir dbLookupCombobox İle Listeletip seçilen İl ve İlçeleri Yukarıdaki Tabloya yazdıralım.

İl   ve İlçelerin bulunduğu aşağıdaki tablolarımız olsun.

İl Tablosu



İlçe Tablosu



İlçeler tablosundaki MST_ID alanı iller tablosundaki SELF alanına bağlıdır. iller tablosunda Adanayı seçtiğiniz zaman iller tablosundaki SELF alanının değerine İlçeler tablosunsda MST_ID alaında değeri 1 olan kayıtlar Listelenir.. Bu İki  tabloyu delphi içinden Master / Detail Bağlantısını sağlıyoruz. 3 table, 3 Datasource, 2 dbedit,2 dblookupcombobox 4 Label ve birde dbnavigator bileşeni formumuza ekliyoruz..

Aşağıdaki gibi  Tasarımınızı yapın



DATASOURCE1.DATASET > TABLE1

TABLE1.TableName > LOOK_ORNEK

DATASOURCE2.DATASET > TABLE2

TABLE2.TableName > IL

DATASOURCE3.DATASET > TABLE3

TABLE3.TableName > ILCE

Şimdi il ve ilçe Tablosunu bir birine ilişkilendirelim (Master / Detail ). Master / Detail bağlantı kurmayanlarada  örnek taşkil edecektir.

İlçe Tablomuzun MasterSource Özelliğine Bağlantı Kuracağımız İl tablosunun Datasosourcesini Gösteriyoruz.

Table3.Mastersource > Datasource2

Daha sonra ilişkilendireceğimiz Alanları Belirlemek için

Table3.MasterFields özelliğine Tıklıyoruz. Karşımıza Aşağıdaki pencere çıkıyor



Bağlantı Kurulacak Alanları seçtikten sonra Add buttonuna tıklayıp ok'liyoruz.

2 dbedit ve dbnavigator bileşenlerinin Datasourcelerine Datasource1'i gösteriyoruz.

DBEdit1.DataField > IDNO

DBEdit2.DataField > ADI_SOYADI

DBLookupComboBox1.ListSource > Datasource2

DBLookupComboBox1.ListField > ADI

DBLookupComboBox1.KeyField > ADI

DBLookupComboBox1.Datasource >Datasource1

DBLookupComboBox1.DataField > IL

DBLookupComboBox2.ListSource > Datasource3

DBLookupComboBox2.ListField > ADI

DBLookupComboBox2.KeyField > ADI

DBLookupComboBox2.Datasource >Datasource1

DBLookupComboBox2.DataField > ILCE

tABLOLARI aKTİF YAPIP TEST EDİN.

ÖZELLİKLERİ

ListSource : Bileşenin verileri Listeleyeceği Datasource bileşeni

ListField : ListSource de belirtilen Kaynaktaki alanlardan hangisininListelemede  Kullanılacağını belirtir

KeyField : Bağantının Hangi alan üzerinde yapılacağını Belirtir. Bu alanda seçili veri DataField Bölümünde Belirtilen alana yazılır

DataSource : Listsourcede Belirtilen veri Kaynağının Hangi erikaynağına yazılacağını belirtir.

DataField : Datasource ile belirtilen kaynaktaki (tablo) KeyFielddeki verinin hangi alana yazılacağını belirtir.

datasource ve datafieldi boş bırakırsanız tabloya herhangi bir veri yazmayıp sadece listeleme yapr.

Örnek 2

Şimdi Bileşenin Farklı bir  kullanım şeklini göreceğiz. Diyelim bir tablomuz var. adısoyadı ve ilkodu diye iki alanımız var.  tabloya il adını değilde ilkodunu girmek istiyoruz fakat kullanıcının bu kodları tek tek ezberlemesi gerekecek ve doğal olarak zorlandığı için programınızı sevmeyecektir. Programımızda kullanıcı il adını seçecek fakat biz tabloya il kodunu yazacağız.

Tablolarımız aşağıdaki gibi  olsun.

   

2 table, 1 Datasource ve birde dbGRİD bileşeni formumuza ekliyoruz..

DATASOURCE1.DATASET > TABLE1

TABLE1.TableName > LOOK_ORNEK

DBGRID1.DATASOURCE > DATASOURCE1

TABLE2.TableName > IL

TABE1'e çift tıklayıp.Fields Editörü açıyoruz. Fields Editör üzerinde sağ tıklayıp New Field deyip aşağıda sanal bir alan oluşturuyoruz.



Yukarıdaki ayarları yaptıktan sonra sanal alanımızı normal bir alan gibi kullanabilirsiniz



Gördüğünüz gibi grid üzerinde açılır liste şeklinde bir alanımız  oluştu. bu alan üzerinde yapılacak değişiklik IL_KODU alanına yansıyacaktır. isteseydik bir dblookupcombobox bileşeni forma ekleyip sadece Datasource ve DataField özelliklerini ayarlayarak kullanabilirdik. veya yukarıdaki IL_KODU alanını dbgridde göstermeyebilirdik.
Ynt: DBLookUpComboBox Gönderen: Mikdad Tarih: 09 November 2005 10:00:32
abim ya şu frebird beni biraz zorluyacak galiba çok karışık geliyor ya
Ynt: DBLookUpComboBox Gönderen: Fatih Tarih: 09 November 2005 13:30:48
abim ya şu frebird beni biraz zorluyacak galiba çok karışık geliyor ya
zorlamaz meerak etme Razz
Ynt: DBLookUpComboBox Gönderen: Mikdad Tarih: 09 November 2005 15:53:34
İnşallah Başalırız İnşallah
Ynt: DBLookUpComboBox Gönderen: 32844 Tarih: 25 February 2008 15:51:25
Fatih Hocam,
Kitap çalışmalarından fırsat bulamazsın o nedenle yazdıklarımın cevap vermen için en küçük bir baskı oluşturmamasını istiyorum. Sitedeki arkadaşlardan ricam bunu firebird veritabanındaki dosyalarda nasıl yapabiliriz. Firebird'de il ve ilçelerden oluşan iki tablo hazırladım. DBLookupComboBox1 de ili ve DBLookupComboBox2 de ilgili ilçeleri nasıl listeleyebiliriz.
 
Ynt: DBLookUpComboBox Gönderen: FetihlerFatihi Tarih: 25 February 2008 16:35:16
IBX bileşenleri tüm kaydı bağlandığında çekmez. Bu sebeple, tüm kayıtları normalde göremezsin. Bunun önüne geeçmek için tabloya bağlantı nesnen hangisi ise, afteropen olayına; "Tablo1.FetchAll;" yazmalısın.

Bağlantı nesnenin ismini "tablo1" olduğunu varsaydım
Ynt: DBLookUpComboBox Gönderen: FetihlerFatihi Tarih: 25 February 2008 17:23:02
Ekte bir örnek
Ynt: DBLookUpComboBox Gönderen: 32844 Tarih: 26 February 2008 17:04:27
Fatih Hocam,
Ellerine sağlık. O kadar işinin gücünün arasında seni de meşgul etmiş oldum. Örnek dosyayı da eklemişsin. Çok teşekkürler.