Veri Erisim Nesneleri Hcil Wwwjavadilicom

  • Uploaded by: www.javadili.com
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Veri Erisim Nesneleri Hcil Wwwjavadilicom as PDF for free.

More details

  • Words: 3,147
  • Pages: 16
m

va

dil

i.c o

HACETTEPE ÜNİVERSİTESİ

ww w. ja

MÜHENDİSLİK FAKÜLTESİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

BİL 447 YAZILIM MÜHENDİSLİĞİ LABORATUARI

ÖĞRENCİNİN

Adı Soyadı:

Hasan ÇİL

Numarası:

20122048

Öğrenim Yılı:

2004-2005 Güz Dönemi

Ödevinin Konusu:

VERİ ERİŞİM NESNELERİ (DAO)

İÇİNDEKİLER

ww w. ja

va 1

2 3 4 4 4 4 4 4 5 5 5 5 6 6 6 6 7 7 8 8 9 9 10 10 10 11 11 11 11 12 12 12 13 13 14 14

m

dil

i.c o

DAO’NUN KISA TARİHÇESİ VERİ ERİŞİM NESNELERİ (DAO) Veritabanı Motoru (DBEngine) Hatalar (Errors) Çalışma Alanları (Workspaces) Kullanıcılar (Users) Gruplar (Groups) Veritabanları (Databases) Tablo Tanımları (TableDefs) Sorgu Tanımları (QueryDefs) Alanlar (Fields) Kayıt Kümeleri (Recordsets) İlişkiler (Relations) Nitelikler (Properties) DAO TEMELLERİ Nesneler ve Derlemler Ünlem (!) ve Nokta (.) İşaretlerinin Kullanımı Derlemin Sınırlarını Saptamak Varsayılan (Default) Derlemler Nesne Değişkenlerini Kurma ve Kullanma Nesne Değişkenlerini Kapatmak DAO NİTELİKLERİ Nitelik Türleri Nitelikler Derlemi Salt Okunur Nitelikler DAO METOTLARI DAO’NUN KULLANIMI Veritabanı Nesnesi Yaratmak Kullanıcı Tanımlı Nitelikler Oluşturmak Gruplar ve Kullanıcılar Eklemek Varolan Veritabanı Nesnelerini Sorgulamak Derlemleri Yenilemek Veritabanındaki Nesneleri Listelemek Nitelikleri Sorgulamak Varolan Veritabanı Nesnelerini Değiştirmek VERİ YÖNETİMİ

DAO’NUN KISA TARİHÇESİ

m

VERİ ERİŞİM NESNELERİ’NE (DATA ACCESS OBJECTS) GİRİŞ

DAO 1.0

Data Access Objects 1.0

ww w. ja

Data Access Objects 2.0

EN ÖNEMLİ YETENEKLERİ Visual Basic 2.0 ODBC üzerinden sınırlı veri erişimi. Sadece ileriye doğru veri erişimi. Microsoft Access 1.0 Tablolara ve sorgu nesnelerine arayüz, simgelenen tablolara nesneler, dinamik kümeler (dynasets) ve sınırlı sayıda özellikle görünümler. Visual Basic 3.0 Programlı olarak açık yapılara, “TableDef”, “QueryDef” ve “Field” nesneleri eklendi. Microsoft Access 2.0 OLE otomasyonunun ilk izleri, hemen hemen tüm Microsoft Jet fonksiyonlarına tam erişim. Çok sağlam nesne ve özellikler kümesi ile tam nesne modelleme. ODBC Masaüstü Veritabanı Hem 16, hem 32 bit platformlar Sürücüleri için yaratılmıştır. ODBC masaüstü veritabanı sürücüleri 2.0 ile kullanılmak üzere tasarlanmıştır. Sadece 16 bit versiyonu nakledilmiştir (Visual Basic 4.0’ın 16 bit versiyonu ile kullanımı için). Windows 95 için Microsoft Herhangi bir uygun sunucuya Access, Visual Basic 4.0 destek için geliştirilmiştir. (32bit), Microsoft Excel 7.0, Visual C++

dil

İsimsiz

SUNUCU VERSİYONU

va

ARAYÜZ

i.c o

DAO, Visual Basic 2.0 ile kullanıma başlanmasından beri, sadece sınırlı ve basit nesne kümeleri kümelerine erişen bir araçtan, hemen hemen tüm Misrosoft Jet görevlerini yapabilen çok sağlam bir araça dönüşmüştür. Aşağıdaki tablo DAO’nun gelişim evrelerini göstermektedir:

Data Access Objects 2.5

Data Access Objects 3.0

2

VERİ ERİŞİM NESNELERİ (DAO)

dil

i.c o

m

DAO, derlem ve nesne sıradüzeni olarak geliştirilmiştir. Tüm tablolar, alanlar, dizinler, sorgular ve diğerleri derlemler halinde düzenlenmiş nesneler tarafından temsil edilir. Her nesne, kendine ait özellikleri betimleyen nitelikler kümesine ve nesneler üzerinde çeşitli işlemleri gerçekleştirmek için kullanılan bir veya daha fazla metoda sahiptir.

va

Şekil 1. Derlemler, nesneler, nitelikler, metotlar.

ww w. ja

DAO sıradüzeninde, tüm nesneler, veritabanı motorunu temsil eden tek bir nesneden dallara ayrılır.

Şekil 2. DAO Sıradüzeni

3

Veritabanı Motoru (DBEngine)

m

“DBEngine” nesnesi veritabanı motorunu temsil eder. En üst seviye nesnesi olarak, DAO sırdüzeni altındaki tüm diğer nesneleri içerir ve kontrol eder.

i.c o

Hatalar (Errors)

DAO kullanarak işlemler gerçekleştirildiği zaman, hatalar elde edilebilir. Bu hatalar “Errors” derleminin içinde “Error” nesnesi olarak tutulur. Çalışma Alanları (Workspaces)

dil

Bir çalışma alanı nesnesi, motor üzerindeki her aktif oturum için vardır. Bir oturum, veritabanı motoru tarafından gerçekleştirilen işlem dizisini ayrıntılı olarak açıklar. Bir oturum, bir kullanıcı giriş yaptığı zaman başlar ve çıkış yapınca biter. Bir oturum boyunca yapılan tüm işlemler, bir işlem faaliyet alanı oluşturur. Çalışma alanı nesnesi, belirli bir kullanıcı için, bir kullanıcı/şifre güvenlik alanı ve bir işlem alanı sağlar. Bir çalışma alanları derlemi, o anda çalışan veritabanı motoru tarafından tanımalanan tüm çalışma alanı nesnelerini içerir.

va

Kullanıcılar (Users)

ww w. ja

Veritabanı motoru, veritabanında bulunan nesneleri, izinsiz erişimlerden korumak için güvenlik servisi sağlar. Bu güvenlik modeli, çalışma alanında tanımlanan kullanıcı ve gruplara dayanır. Bir kullanıcı nesnesi, çalışma alanı nesnesinin çalışma alanı veritabanında bir kullanıcı hesabı tanımlar. Kullanıcılar derlemi, çalışma alanındaki tüm kullanıcı nesnelerini içerir. Gruplar (Groups)

Kullanıcılar (Users) derleminde olduğu gibi, gruplar derlemi de güvenlik modelinde nesne erişimlerinin kontrolu için kullanılır. Gruplar derlemi tüm grup nesnelerini içerir. Her grup nesnesi, grup içindeki her kullanıcı nesnesini içeren bir kullanıcılar derlemi içerir. Veritabanları (Databases)

DAO’da, bir veritabanı nesnesi, o anda açık olan veritabanını simgeler. Bu bir yerel veritabanı dosyası veya harici başka bir veritabanı olabilir. Veritabanı veya başka tür bir dosya olmak üzere, aynı anda birden çok veritabanı açılabilir. Bir veritabanları derlemi, bir çalışma alanında bulunan tüm veritabanı nesnelerini içerir.

4

Tablo Tanımları (TableDefs)

i.c o

m

Tablo tanımı nesnesi, veritabanında tutulan bir tabloyu temsil eder. Aynı zamanda, birbirine bağlı tabloları da içerir. Tablo tanımı nesnelerinin tablonun verilerini değil, tablonun yapısını temsil söylemek önemli bir noktadır. Bir tablo tanımları derlemi, veritabanı için tüm tablo tanımı nesnelerini içerir. Sorgu Tanımları (QueryDefs)

Sorgu tanımı nesnesi, veritabanında kayıtlı bir sorguyu temsil eder ve sorgunun SQL temsilini içeren özelliklerinin bilgisini korur. Bir sorgu tanımları derlemi, veritabanı için tüm sorgu tanımı nesnelerini içerir. Alanlar (Fields)

dil

Alan nesnesi belirli bir alanı temsil eder. “TableDef”, “QueryDef”, dizin, ilişki ve kayıt kümesi nesneleri alanlar derlemi içerir. TANIM

DERLEM

İlişkiler

ww w. ja

Kayıt Kümeleri

Tablodaki alanları tanımlar ama tablodaki verileri içermez. Sorgudaki alanları tanımlar ama sorgudaki verileri içermez. Bilginin içeriğinde bir dizin oluşturan alanların karakteristik özelliklerini tanımlar. Bilginin içeriğinde bir ilişki oluşturan alanların karakteristik özelliklerini tanımlar. Kayıt kümesinin dayandığı tablo ve sorguların içinde bulunan alanları tanımlar. Alanın “değer” niteliğinde bulunan veriyi içerir.

va

Tablo Tanımları Sorgu Tanımları Dizinler

Kayıt Kümeleri (Recordsets)

Kayıt kümesi (Recordset) nesnesi, diğer veri erişim nesnelerinden biraz daha farklıdır çünkü kayıt kümeleri sadece kodunuz veya uygulamanız çalışırken varolur. Bir kayıt kümesi nesnesi, bellekte, bir ya da daha fazla tablodan gelen kayıtlar topluluğunu temsil eder. Kayıt kümeleri en güçlü yapılardan biridir çünkü sadece yerel Microsoft Jet tablolarına erişilmesini sağlamakla kalmaz, aynı zamanda Microsoft FoxPro gibi ISAM veri kaynaklarından veya Microsoft SQL Server gibi ODBC veri kaynaklarından tablolara da erişilmesini sağlar. Ayrıca, kayıt kümesi nesneleri, heterojen veri kaynaklarından gelen çoklu tabloları çaprazlayan sorgular dayandırılmış olabilir. Kayıt kümeleri derlemi, o anda açık olan veritabanı nesnesindeki tüm kayıt kümelerini içerir. Şurası vurgulanmalıdır ki, kayıt kümeleri, yalnızca bir kod ile açılan nesnelerdir ve çalışma aşamasında oluşturulurlar.

5

İlişkiler (Relations)

m

Bir ilişki nesnesi, bir ya da daha fazla tablonun kolonları arasında ilişkiyi temsil eder. Bir ilişkiler derlemi, verilen bir veritabanı nesnesi için tüm ilişki nesnelerini içerir.

i.c o

Nitelikler (Properties)

Her veri erişim nesnesi, bir nitelikler derlemine sahiptir. Bir nitelik nesnesi, bir nesnenin karakteristik özellikleri hakkında bilgi içerir. Bir nesnenin karakteristik özelliklerini öğrenmek için nitelik değerleri okunabilir veya başka bir nitelik değeri yazılabilir.

DAO TEMELLERİ

dil

Bu bölümde DAO nesneleri ve derlemleri ile nasıl çalışılacağı, nesnelerin nasıl kullanılacağı, ve nesne değişkenleri kullanılarak nasıl nesne temsil edileceği gösterilecektir. Nesneler ve Derlemler

va

DAO sıradüzeninin tartışılmasında görüldüğü üzere, nesne ve derlem kavramları çok önemlidir. Pek çok tür nesne, bu her türün üyesini içeren derlemlere sahiptir. Örneğin bir “TableDefs” derlemi, veritabanındaki tüm tablo tanımları kümesini temsil eder ve tüm bireysel “TableDef” nesnelerini içerir.

ww w. ja

Bir nesne genellikle, derlem sıradüzeni üzerinden erişilir. Bu da demek olur ki, erişilmek istenen nesneyi gösteren yolu programcı belirtir. Genel olarak bu işe, veritabanı motoru ile başlanır ve yol, sıradüzene göre çizilir. DBEngine. ParentCollection.ChildCollection!Name

Bir derlem içinde bulunan bir nesneye erişmenin 4 farklı yolu vardır:

1. Collection!name, veya Collection![name] Eğer “name” isimli nesne boşluk gibi standart olmayan karakterler içeriyorsa.

2.

Collection("name")

3. Collection(string) “string”, nesnenin ismini içeren bir ifade olmak üzere.

4. Collection(index) “index”, nesnenin derlem içindeki pozisyonu olmak üzere.

Birinci form kullanılarak bir nesneye direkt olarak adı ile erişilebilir. Bu format daha özlüdür ve uzun nesne refereanslarını diğer formlardan daha okunabilir yapar.

6

m

İkinci form kullanılarak, bir nesneye, adını vererek erişilir. Aşağıdaki iki örnek birbirinin denkidir. TableDefs("Customers") TableDefs("Cust" & "omers")

i.c o

Üçüncü form kullanılarak, bir nesneye, değişken kullanılarak erişim sağlanır.

Dördüncü form kullanılarak, bir nesneye, derlem içindeki pozisyonu belirtilerek erişilir. Bu formatın ana kullanım amacı, bir derlem içindeki nesneleri teker teker gezinmektir. Örneğin: For intX = 0 To 9 Debug.Print Next intX

Workspaces(0).Databases(0).TableDefs(intX).Name

dil

DAO derlemlerinde kullanılan dizinler her zaman 0-tabanlıdır. Bu, dizinler her zaman sıfırdan başlar anlamına gelmektedir. Bu önemli bir noktadır çünkü çoğu zaman 1-tabanlı dizinlerler çalışmaya alışılmıştır.

va

Söylenmesi gereken bir önemli nokta da, bir nesnenin derlem içindeki yerinin her zaman sabit olmadığıdır. Derleme bir nesne eklendiğinde veya derlemden bir nesne çıkartıldığında diğer nesnelerin yeri değişebilir. Bir derlem içindeki nesnelere sıra ile erişim yapılmıyorsa, doğrudan belirli bir nesneye erişim yapılacaksa, dizin numarası verilerek erişim sakıncalıdır. Ünlem (!) ve Nokta (.) İşaretlerinin Kullanımı

ww w. ja

DAO sözdiziminde, nesne referanslarının bölümleri, nokta veya ünlem işaretleri kullanılarak ayrılır. Ne zaman nokta, ne zaman ünlem işareti kullanılacağı ise kullanım durumuna bağlıdır. Genel olarak şu durumlarda kullanılır: • Eğer Microsoft Jet tarafından oluşturulmuş bir üye veya niteliğe erişmek isteniyorsa, ünlem; • Eğer başka bir kişi tarafından oluşturulmuş bir üye veya niteliğe erişmek isteniyorsa, nokta kullanılır.

Derlemin Sınırlarını Saptamak

Bir derlemin sınırlarını saptamak için, derlemin “Count” metodu kullanılır. Metodun değeri, derlem içindeki nesnelerin sayısını belirtir. Örneğin: bir derlemin “Count” metodu, 5 değerini geri döndürdüyse, derlem içinde 5 adet nesne var demektir. Aşağıda “Count” metodunun kullanımı örneklendirilmiştir: For intX = 0 to Workspaces(0).Databases(0).TableDefs.Count - 1 Debug.Print Workspaces(0).Databases(0).TableDefs(intX).Name Next intX

7

m

Bir nesne silindiği zaman, derlemin “count” niteliği bir azaltılır. Bu nedenle döngü kullanlarak yapılan sıradan silme işlemlerinde, üst sınır olarak “Count” metodu kullanılmamalıdır. Yukarıdaki örnekte, for döngüsü içinde yazılan ifade yerine silme işlemi yapılsaydı, döngü her tekrarlandığında “Count” metodunun ürettiği değer farklı olacaktır.

i.c o

Varsayılan (Default) Derlemler

Hemen hemen tüm veri erişim nesneleri varsayılan derlemlere sahiptirler. Bu varsayılan derlemler ile, kod içinde daha özlü bir erişim sağlanabilir. Örneğin: Çalışma Alanı nesnesinin varsayılan derlemi, Veritabanı derlemidir. Şu şekilde kullanılabilir: DBEngine.Workspaces(0).Databases(0) ifadesi varsayılan derlem kullanılarak; DBEngine.Workspaces(0) şeklinde, hatta daha da ileri gidilerek;

dil

DBEngine(0) şeklinde de kullanılabilir.

Aşağıdaki tablo DAO’da mevcut varsayılan derlemleri göstermektedir: Varsayılan Derlem

va

Nesne

Çalışma Alanları (Workspaces) Veri Tabanları (Databases) Gruplar (Groups) Kullanıcılar (Users) Tablo Tanımları (TableDefs) Alanlar (Fields) Alanlar (Fields) Parametreler (Parameters) Alanlar (Fields) Alanlar (Fields)

ww w. ja

Veritabanı Motoru(DBEngine) Çalışma Alanı (Workspace) Kullanıcı (User) Grup (Group) Veritabanı(Database) Kayıt Kümesi (Recordset) Tablo Tanımı (TableDef) Sorgu Tanımı (QueryDef) Dizin (Index) İlişki (Relation)

Nesne Değişkenlerini Kurma ve Kullanma

Bir nesne değişkenini kullnamak için, önce değişken türü tanımlanır ve daha sonra “set” metodu kullanılarak nesne o değişkene atanır. Genel kullanım şekli şöyledir:

Dim VarName As ObjectVariable

Set VarName=SomeDataAccessObject

8

Sonra

Function ShowFieldNames() Dim intX As Integer

Function BetterShowFieldNames() Dim intX As Integer Dim tblCustomers As TableDef

Set tblCustomers = DBEngine(0)(0).TableDefs("Customers")

i.c o

For intX = 0 To DBEngine(0)(0).TableDefs("Customers"). _ Fields.Count - 1 Debug.Print DBEngine(0)(0).TableDefs("Customers"). _ Fields(intX).Name Next intX End Function

m

Önce

For intX = 0 To tblCustomers.Fields.Count - 1 Debug.Print tblCustomers.Fields(intX).Name Next intX End Function

Bu kodlama stili, koda okunabilirlik, bakım ve gerçekleştirim kolaylığı sağlar.

va

Nesne Değişkenlerini Kapatmak

dil

Şurası önemlidir ki, nesne değişkenleri gerçek değişkenlerden türer ve gerçek değerleri yoktur. Değeri değil, bir nesneyi referans gösterirler. Bir başka ifadeyle, nesne değişkenleri, bir nesnenin kendisini değil, bellekteki tanımını gösterir.

ww w. ja

Bellekte tutulan ve kod içinde daha fazla ihtiyaç duyulmayacak olan nesneler, kapatılmalıdır. Bu nedenle DAO, bu geçici nesneleri kapatmak için “Close” metodu tanımlamıştır.

DAO NİTELİKLERİ

Nesneler ve derlemler, eğer karakteristik özelliklerinin yönetilmesinin veya sorgulanmasının hiç yolu yoksa, küçük değerleri vardır. DAO’daki nesnelerin tamamı, karakteristik özelliklerini belirten niteliklere sahiptir. İyelik değerleri, bir nesnenin niteliklerinin yeniden düzenlenmesine ve izlenmesine olanak sağlar. Nitelikler, “Nitelik” (Property) nesneleri ile temsil edilir. Nitelik nesnelerinin kendileri nitelikleri içerir. Her “Nitelik” nesnesi şu niteliklere sahiptir: Nitelik

Name Value Type Inherited

Tanım Niteliğin ismi Niteliğin değeri Niteliğin veri türü Bir niteliğin bir nesneden miras olaral alındığını belirtir. 9

Veri Türü Metin Değişken Tamsayı sabit Evet/Hayır

m

Nitelik Türleri

i.c o

İki tür nitelik vardır. • “Built-in” nitelikler • “User-defined” nitelikler

“Built-in” nitelikler, veritabanı motoru tarafından otomatik olarak oluşturulan ve takip edilen niteliklerdir. “User-defined” nitelikler, kullanıcılar tarafından oluşturulan niteliklerdir. Bir nesnenin “Nitelikler” derlemine, “Tanım” (Description) adı verilen, kullanıcı tarafından oluşturulan bir nitelik eklenerek, bir bilgi saklanabilir veya günlenebilir.

dil

Nitelikler Derlemi

Her veri erişim nesnesi, kendisi ile ilgili bir nitelikler derlemi içerir. Her derlem, nesnenin DAO’ya açtığı her karakteristik özelliği betimleyen nitelik nesnesi içerir. Niteliklere ve nitelikler derlemlerine diğer DAO neslerine erişildiği gibi erişilebilir: Properties!PropertyName or Properties![PropertyName], Eğer nitelik ismi, boşluk gibi standart olmayan karakterker içeriyorsa.



Properties("PropertyName")



va



Properties(expression)

ww w. ja

“expression”, nesnenin ismini içeren bir ifade olmak üzere. •

Properties(index)

“index”,

nesnenin derlem içindeki pozisyonu olmak üzere.

Örnek olarak, “Type” niteliğine erişim şu şekilde yapılabilir:

TableDefs!Customers.Fields!LastName.Properties!Type TableDefs("Customers").Fields("LastName").Properties("Type") TableDefs("Customers").Fields("LastName").Properties(strType) TableDefs("Customers").Fields("LastName").Properties!Type TableDefs("Customers").Fields("LastName").Properties(3)

Salt Okunur Nitelikler

Bir nesne yaratıldığı zaman, nesnenin karakteristik özelliklerini belirtmek için nitelikleri tanımlanır. Sonra oluşturulan nesne, veritabanının bir parçası yapmak için ilgili derleme eklenir. Ancak bu işlem yapılırken bazı nitelikler salt okunur olarak yaratılır. Bunu düzeltmenin tek yolu nesneyi silmek ve tekrar yaratmaktır.

10

DAO METOTLARI

m

Metotlar, nesneler üzerinde rol oynayan prosedürlerdir. Pek çok veri erişim nesnesi, bu nesnelerle faydalı bir şekilde iletişime geçmek için kullanılan metotlara sahiptir. Metotlar, tek bir önemli ayrımın dışında, kod içinde yazılan prosedürler ile aynıdır. Bu ayrım ise, metotlar nesneler çok belirgin bir şekilde bağlıyken, prosedürler bağımsız olarak çağırılırlar.

i.c o

Prosedürler gibi metottlar da, bir değer geri döndürebilir veya döndürmeyebilir. Metotların genel kullanımı şöyledir. object.method [[(] arglist [)]]

DAO’NUN KULLANIMI

dil

Veritabanı Nesnesi Yaratmak

Nesne yaratma işlemi iki aşamalı bir iştir. Önce bir nesne yaratılır ve karakteristik özellikleri tanımlanır. Sonra, sonra nesne kendisini veritabanının vazgeçilmez ve sürekli bir parçası yapan derleme eklenir. Eğer yaratılacak nesne alt nesneler içeriyorsa, önce ana nesneyi yaratılır, sonra alt nesne yaratılır ve derleme eklenir, daha sonra ana nesne derleme eklenir.

va

“CreateDatabase” metodu kullanılaral bir veritabanı oluşturulduğunda, veritabanı otomatik olarak kalıcı olur. Veritabanını kalıcı hale getirebilmek için Veritabanları derlemine eklemeye gerek yoktur.

ww w. ja

Kullanıcı Tanımlı Nitelikler Oluşturmak

Aşağıdaki örnek, varolan bir tabloyu açar, her alana, “DateLastModified” adında bir nitelik ekler ve böylece her alan için son değişim tarihi saklanabilir.

Sub AddNewProp() Dim dbsContacts As DATABASE Dim tblCustomers As TableDef Dim fldTmp As Field Dim prpNew As Property

Set dbsContacts = OpenDatabase("C:\Samples\Chap02\Contacts.mdb") Set tblCustomers = dbsContacts.TableDefs("Customers")

For Each fldTmp In tblCustomers.Fields Set prpNew = fldTmp.CreateProperty("DateLastModified") prpNew.Type = dbText prpNew.Value = Now fldTmp.Properties.Append prpNew Next fldTmp dbsContacts.Close End Sub

11

m

Tabi ki, sadece yeni bir nitelik eklemek bu niteliğin değerinin günlenmesini ve korunmasını sağlamaz. Gerçekleştirilen uygulamanın başka bir kısmında bu nitelik günlenmelidir. Gruplar ve Kullanıcılar Eklemek

Varolan Veritabanı Nesnelerini Sorgulamak

i.c o

Dao kullanılarak, kullanıcılar ve gruplar oluşturulabilir, nesnelere izinler atanabilir.

Yapıları elde etmede ana kavram, derlemler içinde gezinebilmektir.

dil

Derlemleri Yenilemek

Derlemleri sorgulamaktaki ana kavram, derlemleri yenilemektir. Bir derleme nesneler elendikçe ve derlemden nesneler silindikçe, DAO genellikle derlemin izlerini tutar. Buna rağmen, DAO’nun, nesnenin o anki durumunu bilemeyeceği durumlar da vardır. Bunlar:

• •

Kullanıcılar, çoklu kullanıcı ortamında ortak kullanılan bir veritabanını değiştiriyor olabilir. Kullanılan sorgular, yapıları eskitebilir (DROP TABLE Costumers). Değişiklikler bir sunucu programın kullanıcı arayüzü üzerined yapılıyor olabilir (Bu durum, Visual Basic gibi, DAO’yu direkt kullanan uygulamalar için geçerli değildir).

va



Yenileme için kullanılan genel kodlama tarzı

ww w. ja

Æ Collection.Refresh

şeklindedir.

Eğer yazılan kod, tablo tanımlarının tam bir listesini istiyorsa, kullanmadan önce tablo tanımlarını yenilemekte fayda vardır. Bu da: dbCurrent.TableDefs.Refresh

komutu ile gerçekleştirilir. “dbCurrent”, o anda açık olan veritabanına göstergedir. “Refresh” komutunu sadece gerekli olduğu yerde kullanmak performans açısından önemli bir mantıktır. Çünkü yenileme metodu zaman alan bir iştir.

12

Veritabanındaki Nesneleri Listelemek

m

Veri erişim neslerini listeleme işlemi, en çok gerçekleştirilen işlemlerdendir. Aşağıdaki örnek tüm tablo tanımları, sorgu tanımları ve ilişkileri listeler.

i.c o

Sub ShowInventory() Dim dbsContacts As DATABASE Dim tblDef As TableDef Dim qryDef As QueryDef Dim relDef As Relation Dim conDef As Container

Set dbsContacts = OpenDatabase _ ("C:\Samples\Chap02\Contacts.mdb")

dil

Debug.Print "TableDefs" For Each tblDef In dbsContacts.TableDefs Debug.Print " " & tblDef.Name Next tblDef Debug.Print "QueryDefs" For Each qryDef In dbsContacts.QueryDefs Debug.Print " " & qryDef.Name Next qryDef

ww w. ja

Nitelikleri Sorgulamak

va

Debug.Print "Relations" For Each relDef In dbsContacts.Relations Debug.Print " " & relDef.Name Next relDef dbsContacts.Close End Sub

Bir nesnenin niteliklerini elde etmek için, nesnenin nitelikler derleminde dolaşılır ve istenen ver alınır. Bazı özel koşullar bunda sorun çıkarabilir: •



Bazı nitelikler okunabilir olmayabilir. Örneğin, bir kullanıcının şifre niteliği okunamaz. Eğer okunabiliyorsa bu uygulamada büyük bir açık var demektir. Özellikle aranan bazı bilgiler, bulunmuyor olabilir.

Aşağıdaki örnek, o anda açık olan veritabanındaki tüm kullanıcıların, tüm niteliklerini listelemektedir.

13

i.c o

For Each usrDef In Workspaces(0).Users For Each prpDef In usrDef.Properties ' Disable VBA error handling On Error Resume Next varPropertyValue = prpDef.Value

m

Sub ShowUserProps() Dim usrDef As User Dim prpDef As Property Dim varPropertyValue As Variant

dil

' See if an error occurred Select Case Err Case 3251 ' Feature not available error Debug.Print prpDef.Name & ": <error: " _ & Error$ & ">" Case 0 ' No error Debug.Print prpDef.Name & ":" & varPropertyValue Case Else ' Unanticipated error Error Err End Select

va

' Re-enable VBA error handling On Error GoTo 0 Next prpDef Next usrDef End Sub

Varolan Veritabanı Nesnelerini Değiştirmek

ww w. ja

DAO’nun kullanımında bir önemli nokta da varolan nesnelerin yapılarını değiştirebilme yeteneğidir. Gerekli ve mümkün olan her yerde DAO, bir nesnenin yapısını değiştirmede kullanılabilir. Ancak yapılamayacak bazı değişiklik işlemleri de vardır. Örneğin bir tablo tanımında bir alanın tür bilgisini değiştirmek, o alandaki tüm verilerin türlerini değiştirmek anlamına geleceği için, bu işlem yapılamaz. Bunu yapmak için, o alan tamamen silinmeli ve yeniden yaratılmalıdır. VERİ YÖNETİMİ

Son olarak DAO tartışmasını toparlamak için, DAO’nun en önemli kullanım alanlarından birinden bahsetmekte fayda vardır: Veri Yönetimi. DAO’da Kayıt Kümesi nesnesi (Recordset), veritabanında depolanmış olan veri ile birincil olarak etkileşen nesnedir. Kayıt Kümesi neneleri çok güçlüdür çünkü veri ile çalışırken büyük bir esneklik sağlarlar. Kayıt Kümesi nesneleri diğer veri erişim nesnelerinden, sadece geçici birer nesne olmaları yönünden ayrılırlar. Kayıt kümesi açmak için kullanılan metot “OpenRecordset”, olmasına rağmen, gerçekten varolan bir Kayıt Kümesi nesnesi açılmamaktadır; her seferinde yenisi üretilir. Kapatıldıktan sonra Kayıt Kümesi daha fazla varolmaz.

14

nesnesine

tabanlı

m

Bir Kayıt Kümesi nesnesi oluşturmak için, veritabanı “OpenRecordset” metodu kullanılır ve sözdizimi şu şekildedir.

Set variable = database. OpenRecordset(source[, type[, options]])

Üç çeşit kayıt kümesine nesnesi vardır:

“Table-type Recordset”: O anda açık olan veritabanında bulunan, kayıt ekleme, silme, sorgulama, değiştirme yapılabilen bir tablonun kod ile temsilidir.



“Dynaset-type Recordset”: Günlenebilir kayıtları olan bir sorgu sonucudur. Bir “dynaset”, arkasında bulunan bir veritabanından, kayıtların ekleme, silme, değiştirme yapılabileceği bir dinamik kayıt kümesidir. Bir dinamik kayıt kümesi farklı tablolardan alanlar içerebilir. Bir sorgu sonucu oluşan mantıksal kayıt kümeleridir.



“Snapshot-type Recordset”: Rapor oluşturmak veya veri bulmak için kullanılabilen bir kayıt kümesinin static bir kopyasıdır. Veritabanındaki pek çok tablodan farklı alanlar içerebilir ama bu alanlar günlenemez.

Kayıt kümesi nesneleri,

Direkt olarak veritabanı içindeki tablolar üzerine Başka veritabanları içindeki tablolar üzerine Harici veri kaynaklarına bağlı tablolar üzerine Sorgular üzerine Kod içinde dinamil olarak oluşturulan sorgu katarları üzerine

açılabilir.

va

• • • • •

dil

i.c o



ww w. ja

Aynı zamanda bir kayıt kümesi oluşturulurken bir takım özellikler de belirlenebilir. • • • • •

Erişilen bir tabloya diğer kullanıcıların erişimi sınırlanabilir. Diğer kullanıcıların kayıtları okuması engelenebilir. Kendi veri erişim türünün salt okunur olması sağlanabilir (table-type). Sadece yeni veri eklenebileceği belirtilebilir (dynaset-type) Tutarlı veya tutarsız veri günlenmesine izin verilebilir.(dynaset-type)

Referans: http://www.microsoft.com adresinden, yorumlanarak Türkçeleştirilmiştir.

15

Related Documents