| Makale Tarihi : 17 Temmuz 2000
Yazan:Can Kaynak |
|
Birden Çok Tabloyu İlişkilendirerek Kullanmak
Makale dizimizin bu bölümünde birden çok tabloyu birbiri ile
ilişkilendirerek nasıl kullanacağımızı anlatacağız.Table öğesinin MasterSource
özelliğine diğer bağlayacağımız tabloyu atadıktan sonra Masterfields özelliği
ile bağlanacak sahaları nasıl birbiri ile ilişkilendireceğimizi öğreneceğiz.
Böylece büyük çaplı tablolarda bütüne yakın kayıtı SQL yerine Tablo kullanarak
daha Hızlı listelemiş olacağız.
Table
öğesini kullanarak iki tabloyu birbiri ile kordineli olarak çalıştırabiliriz. Bunun
için birbiri ile ilişkili iki tablo alarak ilişkinin çokluk tarafında bulanuan
tabloya ilişkili sahayı içeren bir indeks tanımlamalıyız.Daha sonra iki adet Table
ve datasource nesnesi alarak forma koymalıyız. birinci table öğesinin TableName
özelliğini teklik tarafındaki tablo ikinci table öğesinin TableName özelliğini
çokluk tarafındaki tablo olarak ayarlamalıyız.Sonra birinci datasource öğesinin
dataset özelliğini birinci Table öğesi ikinci datasource öğesinin dataset
özelliğini ikinci Table öğesi olarak ayarlamalıyız.
İkinci tabloyu birinci tablo ile ilişkilendirmek için Table öğesinin MasterSource
özelliğini kullanacağız. MasterSource özelliği bir datasouceden gelen verileri
tablonun MasterFields özelliği ile tanımlanmış sahası ile
ilişkilendirmeyi sağlar. Bu özellik ayarlandığında tıpkı bir filitre gibi sadece
ikinci tablo birinci tablodaki aktif kayıtta ilişkilendirilmiş sahayla uyuşan
kayıtları gösterir. Fakat bu özelliğin kullanılabilmesi için indexname
özelliğinin MasterFields özelliğininde tanımlanmış bir sahayı içeren bir indeksi
işaret etmesi gerekir.
MasterSource özelliğine indexname
özelliği ile koordineli olarak verileri elle girebileceğiniz gibi bu özelliğin
sağladığı editörüde kullanabilirsiniz.Yandaki resimde olduğu gibi bu editörde
Available indexes bölümünde açılan kutudan bu tabloya ait olan indeksleri
görebilirsiniz. Bu kutudan bir indeks seçtiğinizde sağ liste kutusuna o indekste
tanımlı sahaları görebilirsiniz. Master fields sahasından ve Detail fields sahasıdan
hangi sahaları eşleştirmek istiyorsanız o sahaları seçip Add düğmesine basın. Bu
düğmeye bastıktan sonra alttaki liste kutusunda birbiri ile ilişkilendirilen sahaları
görebilirsiniz. İlişklilendirmeyi kaldırmak için ilişkilendirdiğiniz saha
tanımını joined fields liste kutusundan seçip delete düğmesine basmalısınız. OK
düğmesine bastıktan sonra Object inspector'da indexname özelliğinin otomatik olarak
Available index kutusundan seçilen indeks adın olduğunu göreceksiniz.
Bu ayarları yaptıktan sonra birinci tablodan seçtiğimiz bir kayıta mükabil ikinci
tablo sadece o kayıtla ilgili bilgi içeren kayıtları gösterecektir.Birden çok
tabloyu birbiri ile ilişkilendirerek kullanmanın faydası büyük ebatta kayıt içeren
yerel bir tabloyu SQL komutları ile sorgulamaktan bizi kurtarır. Çünkü SQL
yerel tablolarda çok yavaştır. Özelllikle büyük çapta bir tablodan tüme yakın
veriyi almaya çalıştıuğında.
Aşağıda DBDEMOS ile Tabloları ilişkilendirerek kullanmak konusunda yaptığım bir
örneği göreceksiniz. Bu örneğin herhangi bir PAS kodu olmadığı için PAS kodunu
yayınlamıyorum.
| DFM kodu |
object Form1: TForm1
Left = 254
Top = 179
Width = 305
Height = 279
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 0
Top = 0
Width = 297
Height = 128
Align = alClient
TabOrder = 0
object DBGrid1: TDBGrid
Left = 1
Top = 1
Width = 295
Height = 126
Align = alClient
DataSource =
DataSource1
TabOrder = 0
TitleFont.Charset =
DEFAULT_CHARSET
TitleFont.Color =
clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS
Sans Serif'
TitleFont.Style = []
end
end
object Panel2: TPanel
Left = 0
Top = 128
Width = 297
Height = 124
Align = alBottom
TabOrder = 1
object DBGrid2: TDBGrid
Left = 1
Top = 1
Width = 295
Height = 122
Align = alClient
DataSource =
DataSource2
TabOrder = 0
TitleFont.Charset =
DEFAULT_CHARSET
TitleFont.Color =
clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS
Sans Serif'
TitleFont.Style = []
end
end
object Table1: TTable
Active = True
DatabaseName = 'DBDEMOS'
TableName = 'customer.db'
Left = 8
Top = 8
end
object Table2: TTable
Active = True
DatabaseName = 'DBDEMOS'
IndexName = 'CustNo'
MasterFields = 'CustNo'
MasterSource = DataSource1
TableName = 'orders.db'
Left = 40
Top = 8
end
object DataSource1: TDataSource
DataSet = Table1
Left = 72
Top = 8
end
object DataSource2: TDataSource
DataSet = Table2
Left = 104
Top = 8
end
end |
Yarın "SQL Sorgulama dili" adı altında yeni bir makale dizisine
başlayacağım." SQL Sorgulama Dili" makalesi tamamlandıktan sonra TQuery
bileşeni ile bu makale dizisine devam edeceğim.
Eğer Bu çalışmalarımı
desteklemek istiyorsanız lütfen aşağıdaki Linke tıklayıp üye olun. Tamamen
ücretsiz olan bu site;size 25 MB yer veriyor.Bana da 1$ veriyor. Böylece daha fazla
yazma şevki oluşacak ve size daha kaliteli bilgi verebileceğim.Unutmayın Ben
Size yardım için hep buradayım ve burada olacağım.

|