USLANMAM

UslanmaM En Kaliteli Bilgi Adresiniz
USLANMAM öğesini iGoogle sayfanıza ekleyin.
Geri git   USLANMAM > PROGRAM > PROGRAMLAMA DİLLERİ > Programlama > Delphi
UslanmaM Resim AlbümleriSosyal Gruplar
Kayıt ol Sosyal Gruplar Ajanda Konuları Okundu Kabul Et


Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 11-26-2007, 09:59 AM   #1 (permalink)
*BUNALIMLARIN ADMİNİ*
 
BoDyGuArD - ait Kullanıcı Resmi (Avatar)
Post Delphi deki Veritabanı Bilşenleri ve Açıklamaları

Delphi deki Veritabanı Bilşenleri ve Açıklamaları
Data Access sayfasındaki bileşenler unvisible (yani program çalıştığı zaman ekranda gözükmeyen) bileşenlerdir. Bu bileşenler Data Controls sayfasındaki bileşenler yardımı ile görüntülenecek veriler için veritabanları ile köprü vazifesi görürler.

TTable: En önemli iki özelliği Database Name’i ve Table Name’dir. Database Name’e BDE içinden tanımladığınız herhangi bir alias’ı projeniz içindeki Database bileşeninin Database Name’ini (bunlar combobox içinde otomatik olarak gelirler) veya paradox vb. gibi tablolar için tabloların bulunduğu dizinin adını verebilirsiniz. Bu bileşenin diğer önemli özelliklerinden biri de Index Name-Index Fields özelliğidir. Bu özelliği herhangi bir kayıta ulaşmak için kullanılır. Herhangi bir kayıta ulaşmak veya istenilen bir kayıtı bulmak için genel olarak üç çeşit yöntem kullanılır. Bunlar

Findaaa()
Locate()
Lookup()
prosedürleridir. Birbirinden farkları şudur. Eğer findaaa’i kullanıyorsanız index name ve index fields özellikleri belirtilmiş olmalıdır. Bu fonksiyon istenilen kayıt bulunmuşsa True aksi halde False değerini döndürür. Kullanılışı şu şekildedir :

Table1.Findaaa([değişken1değişken2…]) gibi. Buradaki değişken sayısı index fields özelliğinde tanımlanan veya index name ile belirtilen indexin sahip olduğu alan sayısına eşit olmalıdır ve o alanlara karşılık gelen değerler verilmelidir.

Örnek: Index Fields=Numara olsun. Bu durumda kod şu şekilde olmalıdır. Table1.Findaaa([2500]) gibi. Burada indekste belirtilen alanın tipi ile koda yazdığımız tip birbirini tutmalıdır. Eğer Index Fields=Adi;Soyadi şeklinde ise kod Table1.Findaaa([‘Ahmet’’SAVAŞ’]) şeklinde olmalıdır.

Locate prosedürü de Findaaa gibi çalışır. Fakat bunda alan isimlerini de kendiniz verirsiniz. Eğer belirlediğiniz alanlara ait bir index varsa kullanılır yoksa sıralı arama yapılır. Kullanılışı:

Table1.Locate(‘adi;soyadi’VarArrayof([‘Ahmet’’SAVAŞ’])[loCaseInsensitiveloPartialaaa]) şeklindedir.

loCaseInsensitive: Büyük harf-küçük harf ayrımı yapılmaz.

loPartialaaa: Bunu kullanırsanız eğer sadece SAVAŞ’ı değilde eğer SAVAŞÇI da varsa onuda bulabilirsiniz.

Lookup da aynı şekildedir. Farklı yanı ise şudur; Findaaa ve Locate de cursor bulunan kayıtın üstüne gider lookup da ise nerde iseniz orda durur. Bir de bu fanksiyonları kullanırken dikkat edeceğiniz diğer bir husus en son yaptığınız işlemdir. Bu prosedürlerden herhangi birini çağırdığınız zaman en son yapılan işlem otomatik olarak kaydedilir. Örneğin iptal etmeniz gereken bir işlem varsa veya tablo insert modundaysa bu durumlarıda kontrol etmelisiniz. Diğer sık kullanılan prosedürleri ise Edit Insert Post’dur.

Tablonun hangi durumda olduğunu Table1.State ile öğrenebilirsiniz. Örneğin Table1.State in [dsEdit] tablonun edit modunda olduğunu gösterir.

TQuery: Bu bileşende TTable bileşeni ile hemen hemen aynıdır. Fakat bu bileşen ve SQL yardımı ile kayıtlar üzerinde sıralama sadece belli kayıtları görüntüleme vb. işlemler çok daha rahat yapılabilmektedir. Aynı şeyler TTable bileşenin Filter Range gibi özellikleri kullanılarak da yapılabilir. Fakat performans açısından bakıldığında TQuery’leri kullanmak her zaman faydalıdır. Query’ler normalde Read-Only’dirler yani kayıtlar üzerinde değişiklik yapamazsınız. Eğer kayıtlar üzerinde değişiklik yapmak istiyorsanız RequestLive özelliğini True yapmalısınız. Bu şekilde kayıtlar üzerinde değişiklik yapıp yapılan değişiklikleri table'da olduğu gibi kaydedebilirsiniz. Fakat SQL cümleciğiniz birkaç tablodan veri alıp getiriyorsa o zaman RequestLive özelliğini kullanmazsınız. Bu şekildeki query’ler üzerinde değişiklik yapabilmeniz için önce CachedUpdates özelliğini True yapmalısınız. (Bu arada RequestLive False olmalıdır.) CachedUpdates özelliği True yapıldığında kayıtlar üzerinde güncelleme değiştirme ve silme yapabildiğinizi göreceksiniz. Fakat bu değişiklikler sadece programda kalır ve fiziksel veritabanını etkilemez. Yaptığımız değişikliklerin kalıcı olması olması için TUpdateSQL bileşenini kullanırız.Bu işlem için aşağıdaki adımları takip etmelisiniz.

TQuery ve TUpdateSQL bileşenlerini yerleştirin
TQuery’nin SQL ifadesini yazın.
TQuery’nin UpdateQbject özelliğini UpdateSQL1 olarak seçin(veya ne isim verdiyseniz)
UpdateSQL1 bileşeninin seçip mouse’un sağ tuşuna basın. Oradan UpdateSQL Editor…’ü tıklayın.

İlk önce üzerinde değişiklik yapmak istediğiniz tabloyu seçmelisiniz. Daha sonra aaa Fields ile belirtilen genellikle sizin üzerinde değişiklik yapmadığınız alanlar seçilmelidir. Numara vb. Daha sonra değiştirilecek alanlar Update Fields da belirtilen alanlardan seçilmelidir. Daha sonra ise Generate SQL butonuna bastığınızda sizin için gerekli SQL’lerin oluştuğunu göreceksiniz. Daha sonra kod içinde istediğiniz herhangi bir yerde UpdateSQL1.ExecSQL() prosedürünü kullanarak yaptığımız işlemin kalıcı olmasını sağlayabiliriz. ExecSQL’in alacağı parametreler;

ukModify : Güncelleme işleminin kalıcı olması için

ukInsert : Yeni girilen bir kayıtın veritabanında olması için

ukDelete : Sildğiniz bir kayıtın veritabanından da silinmesi için. TTable üzerinde geçerli olan işlemlerin birçoğu TQuery içinde geçerlidir.

10 Puanlık Uzmanlık Sorusu: Bir query’im var. SQL’i şöyle: ‘SELECT * FROM ABONE WHERE ABONE_NO IN :NUMARALAR’. Burada numarası 10001001 ve 1002 olan aboneleri getirmek istiyorum. Fakat Query1.ParamByName(‘NUMARALAR&#8217.Value:=’10001 001 1002’ dediğimde hiçbir şey getirmiyor. Bu konuda bilgisi olan varsa değerli katkılarınızı bekliyorum.

TStoredProc: Bu bileşen SQL tabanlı veritabanları üzerinde yazdığınız prosedürleri veya fonksiyonları kullanmanızı sağlayan bir bileşendir. Eğer Oracle Sysbase SQL Server gibi veritabanı kullanmıyorsanız bu bileşene ihtiyacınız yok demektir. Fakat adı anılanlardan herhangi biri veya bunlara benzer bir veritabanı sistemi kullanıyorsanız bu bileşen çok işinize yarayacaktır. Avantajları temel olarak şunlardır. Bu çalıştıracağınız prosedürler veritabanı üzerindedir. Normal kullandığınız query’lere göre çok daha hızlı çalışırlar. Network trafiğini asgari seviyeye indirirler. Yazacağınız prosedürle ilgili kullandığınız veritabanının dökümatasyonuna bakmalısınız.

Örn: Oracle’da prosedür şöyle olsun.

PROSEDURE TEST (ISIM OUT VARHAR2 NUMARA NUMBER) IS
BEGIN
SELECT ADI INTO :ISIM FROM ABONE WHERE ABONE_NO=:NUMARA;
END;

Bunu Delphi’de aşağıdaki gibi kullanabilirsiniz;

StoredProc1.ParamByName(‘Numara&#8217.Value:=’1000 ’;
StoredProc1.GetResults;
Abone_Ismi:= StoredProc1.ParamByName(‘Isim&#8217.AsString;

TDatabase: Bu bileşeni projeniz içinde yönetim kolaylığı sağlamak için kullanabilirsiniz. Mesela TEST diye BDE alias’ınız var. Projedeki bütün table’lar query’ler vs. hepsi buna bağlı. Bunun ismini değiştirdiğinizde bütün projede gidip aliasları değiştirmeniz gerekir. Bunun yerine TDatabase bileşenini kullanırsanız sadece bu bileşenin alias’ını değiştirdiğinizde projede buna bağlı ne kadar bileşen varsa hepsini etkileyecektir.

TDataSource: Verilerinizin data controls sayfasındaki bileşenler yardımı ile görüntülenmesi için tablequery vb. gibi datasetleri mutlaka bir DataSource’a bağlamnız gerekir.

Data Controls:

TDBGrid: Verilerin gösterilmesi için kullanılır. Gösterilecek alanlar ayarlanabilir verilerin fontu ve grid’in başlık fontu ayrı ayrı ayarlanabilir.

TDBNavigator: Veriler üzerinde güncelleme silme yeni kayıt ileri-geri gitme vs. gibi işlemlerin yapıldığı araç çubuğudur. Bunu bir datasource’a bağladığınız zaman bu datasource’un bağlı olduğu dataset navigator de yaptığınız tüm işlemlerden etkilenir.

TDBText: Label ile aynıdır. Fakat bağlı olduğu tablodan belirtilen alan bilgisini görüntüler. Genelde üzerinde değişiklik yapılmaycak alanların gösterilmesi için uygundur.

TDBEdit: DBText ile benzerdir ek olarak eğer imkan dahilinde ise veriler üzerinde değişiklik yapılabilir.

TDBMemo: Birden fazla satırın yada 255 karakterden daha uzun verilerin saklanması ve gösterilmesi için kullanılır.

TDBImage: Veritabanlarında resim içeren alanların işlenmesi için kullanılır.

TDBListBox: Bunun özelliği şudur. Verdiğiniz alan değeri eğer listeni içinde bulunuyorsa otomatik olarak seçilir. Bileşenin listesini siz kendiniz doldurmak zorundasınız. Verdiğiniz alan ile ilgili değerler otomatik olarak gelmez. Mesela listesi Table1’in Isim alanına bağladınız. Etkin kayıttaki isim ‘Ahmet’ ve liste elemanları içinde de ‘Ahmet’ varsa bu eleman otomatik olarak işaretlenir. Aksi halde yani liste elemanları içinde ‘Ahmet’ yoksa listede hiçbir eleman işaretlenmez. Büyük-küçük harf farketmez.

BoDyGuArD isimli Üye şimdilik offline konumundadır  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
You may not post new threads
You may not post replies
Eklenti Ekleyemezsiniz
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık
Gitmek istediğiniz klasörü seçiniz

Benzer Konular
Konu Konuyu Başlatan UslanmaM Cevaplar Son Mesaj
Visual Basic'te veritabanı uygulamaları CENGiZ1 visual basic 3 12-13-2007 12:28 AM