Neler yeni
Türkiye'nin En Güncel Forum Sitesi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

Veritabanı Oluşturmak(Anlatım)

ByOnur58

Kayıtlı Üye
MFC Üyesi
  • Üyelik Tarihi
    7 Ocak 2015
  • Mesajlar
    2,113
  • MFC Puanı
    10
  • MFC Seviyesi

Yeni başlayanlar için mükemmel bir delphi kaynağı

ALIAS HAZIRLAMAK

Delphi’ de projelerde kullanılan veri tabanı dosyaları gruplamak için kullanılan Alias adında yeni kavram veya özellikler bulunmaktadır. Delphi projeleri dahilinde çok sayıda veri tabanı dosyaları üzerinde işlem yaparken Delphi projeleri ile birlikte verilen Borland Database Engine programından yararlanılmaktadır. Delphi ile birlikte ayrıca Borland Database Engine programının çalışma şeklini ayarlamada kullanılan BDE Administrator adında yardımcı bir program verilmektedir.




BDE Administrator programı ile yapılan seçim ve ayarlamalar “CFG” uzantılı bir dosyaya yazıldığı için BDE Administrator programı penceresinin başlığına ayrıca üzerinde işlem yapılan CFG uzantılı dosyanın adı eklenmektedir.
BDE Administrator penceresinde menu çubuğundaki menülerden başka Database ve Configuration adında iki sekme bulunmaktadır. Configuration sekmesinde Drivers ve System adında iki seçenek bulunmaktadır. Drivers seçeneği ile sürücüsü yüklü olan veri tabanlarını görebilir ve sürücü dosyalarının özelliklerinde değişiklik yapabilirsiniz.


Yeni bir Alias hazırlamak veya daha önce hazırladığınız Aliasın özelliklerinde değişiklik yapmak istiyorsanız Databese sekmesine gelmeniz gerekir. Seçildiğinde birçok Alias seçilmektedir.

Mevcut Aliaslardan hangisi hakkında bilgi edinmek veya özelliklerinde
değişiklik yapmak istiyorsanız o Aliası seçmeniz gerekir. Aşağıda verilen ekran görüntüsünü DBDEMOS adlı Aliası seçtikten sonra aldım.



Yeni bir alias hazırlamak için Databases sekmesi seçili durumda iken Object menüsünden New komutu verilmelidir.

Bu liste kutusunu açıp Delphi projeleri dahilinde kullanılabilecek veri tabanı sürücülerini görebilirsiniz. Başlangıçta STANDART adılı veri tabanı sürücüsünü kullanmak istediğim için New Database Alias diyalog kutusunda herhangi bir işlem yapmadan OK düğmesine tıklama yaparak standart özelliklere sahip bir Aliasın hazırlanmasını sağladım.

Bu Aliasın adını DelphiBook olarak değiştirdim. Ancak bu yeni hazırladığımız Alias yardımı ile açılacak ve üzerinde işlem yapılacak veri tabanı dosyalarının hangi sürücü ve klasörde yer alacağı henüz belli değildir. Default Driver parametresinin içeriğini dBASE olarak değiştirelim.

Örnek olması için hazırlayacağım veri tabanı dosyalarını “C:\Ornekler” dizini içinde saklamayı düşündüm. BDE Administrator penceresinde hazırladığım yeni Aliasın Path paremetresine “C:\Ornekler” yazdım. Bu Alias yardımı ile dBASE formatında hazırlayacağım veri tabanı dosyalarında kayıtların Türkçe’nin alfabetik sırasına göre sıralanmasını istediğim için hazırladığım Alias için dil seçimi yaptım. Bu amaçla Configuration sekmesine geçtim. Dbase sürücüsünü seçip LANGDRIVER seçeneği ile açıp dBASE sürücüsü için Türkçeyi seçtim.

Bu ayarlamalardan sonra CFG uzantılı Configuration dosyasını hard diske kaydettim. Object menüsünden Configuration komutu verilir. Idapi32.cfg olarak kaydedilir.


BÖLÜM 14
VERİ TABANI DOSYASI HAZIRLAMAK

Delphi dahilinde dBASE, Paradox, InterBase formatında veri tabanı dosyası hazırlayıp üzerinde işlem yapabilirsininiz. Yeni bir veri tabanı dosyası hazırlamak için Delphi ile verilen DataBase Desktop programından yararlanılmaktadır. Tools menüsündeki Database Desktop komutu verilerek uygulama başlatılır. Yeni bir veri tabnı dosyası için Databse Desktop penceresinden File menüsünden New komutu verilir. Alt menüden Table komutunu verecek olursanız dosyanın formatının seçildiği Table Type diyalog kutusu ekrana gelir. Bu diyalog kutusunudan “dBASE for Windows” dormatını seçelim.

OK tuşuna basıldığında veri tabanı dosyasının kayıt yapısını belirten diyalog kutusu ekrana gelir. Veri tabanı dosyalarının kayıt yapısı veya dosyada yer alacak alanlar bu şekilde belirlendikten sonra sıra kayıt arama işlemlerinde kullanılacak olan Indexlerin seçimine gelir. Hazırlanmak istene veritabanı dosyası için Index hazırlamak için bu diyalog kutusundaki Table Properties liste kutusunda Index seçeneği varken Define düğmesine tıklama yapılır. Ekrana gelen Define Index diyalog kutusunda bütün alanlar listelenir. Alan seçili duruma getirilir. Dosyada aynı soyada sahip olan birden fazla kaydın olmasına izin vermek istemiyorsanız Unique onay kutusunu, eğer NDX dosyalarını kullanmak istiyorsanız Maintained onay kutusunu seçili olma durumunu iptal etmelisiniz.
Başlangıçta NDX uzantılı index dosyasının nasıl hazırlandığını göstermek için Maintained onay kutusunu pasif duruma getirdim. Index veri tabanı dosyasında bulunan bütün kayıtları dahil etmek istemiyorsanız Subset Condition (Filter) Expression metin kutusuna filtre şartlarını yazabilirsiniz. Gerekli ayarlamalar yapılıp OK düğmesine basıldığında Save Index As diyalog kutusu ekrana gelir. Index File Name kutusunda dosya adı girilip Ok yapılırsa NDX uzantılı index dosyası hazırlanmış olur.



Daha önce hazırlamış olduğunuz Indexte değişiklik yapmak istiyorsanız Modify düğmesine, silmek istiyorsanız Erase düğmesine tıklama yapmanız gerekir. SOYAD.NDX uzantılı dosyayı silip MDX uzantılı dosya oluşturmak için bu dosya Erase ile silinir. Define düğmesine tıklayarak define ındex kutusunu ekrana getirilir. MDX uzantılı dosya hazırlamak için Maintained onay kutusu seçilir. Index Tag Name metin kutusunda dosya adı yazılır.

Veri tabanı dosyası için anlatılan şekilde Index hazırlandıktan sonra, dosya için dil seçimi yapmak gerekir. Dil seçimi için ilk olarak Table Properties liste kutusunu açıp Table Language seçeneğini seçmek gerekir. Modify düğmesine tıklayıp dBASE TRK cp857 seçilir.
Bu işlem de tamamlandıktan sonra şimdi de kaydedelim. Save As düğmesine tıklayınca Save Table As diyalog kutusu ekrana gelir. Burada Alias DelphiBook olarak seçilir. Dosya Ornekler dizinine kaydedilir. Dosya açılıdıktan sonra şu ekran gelir:

Veri tabanı dosyasına kayıt girişi yapmak istiyorsanız Table menüsünden Edit Data komutu veya F9 kısa yol tuşu kullanılabilir.

Eğer veri tabanı dosyasının yapısında değişiklik yapmak istiyorsanız Tools menüsünden Utilities alt menüsünden Restructure komutu verilir


BÖLÜM 15
VERİ TABANI DOSYALARI ÜZERİNDE İŞLEM YAPMAK

Bu bölümde DataBase Desktop veya dBASE, Paradox gibi veri tabanı programları ile hazırlanmış olunan veri tabanı dosyaları üzerinde Delphi projeleri dahilinde nasıl işlem yapıldığını anlatacağım. Bu işlemi bir önceki bölümde hazırladım ve ADRES.DBF adıyla kaydettiğim veri tabanı dosyası üzerinde anlatacağım.
Bu amaçla yapılacak işlem, Component Palette araç çubuğundaki Data Access sekmesine tıklamaktır.

Data Access sekmesinde daha önce hazırlanıp kaydedilen bir veri tabanı dosyasının içeriğini görüntülemek veya dosyaya yeni kayıtlar eklemek için ilk gerek duyulan kayıtın adı Table’ dir. Component Palette araç çubuğunda Data Accsess sekmesinde yer alan Table düğmesi seçili durumda iken projenin formu üzerinde tıklama yaparak Table nesnesi forma eklenir.

Object Inspector penceresinde Table nesnesi ile ilgili olarak en başta Database Name özelliğinden yararlanarak Alias seçimi yapılır. Üzerinde işlem yapmak istediğiniz dosyayı hangi Alias’a dayandırarak hazırladıysanız o Aliası seçmeniz gerekir. Bir önceki bölümde DelphiBook adında Bir Alias hazırlanmış ve ADRES.DBF dosyasını bu Aliasa dayandırarak hazırlamıştım. Table nesnesinin Database Name özelliği ile Alias seçiminden sonra sıra veri tabanı dosyasını seçmeye gelir. Veri tabanı dosyası Table nesnesine ait TableName özelliğinden faydalanılarak Adres.DBF dosyası eklenir.


DatabaseName özelliği ile Alias , TableName özelliği ile veri tabanı dosyası seçimi yapıldıktan sonra sıra Table nesnesine ait Active özelliğne True değerini aktarmaya gelir. Böylece Table nesnesi ile ilgili olarak mutlaka yapılamsı gereken işlemler yapıldı. Ancak Delphi’de veri tabanı dosyaları üzerinde pratik bir şekilde işlem yapmak için Table kontrolü tek başına yeterli gelmiyor. Table kontrolüne yardımcı olması için Forma ayrıca DataSource kontrolünün de dahil edilmesi gerekir.
Ancak bu bölümde önce DataSource kontrolünden yararlanmadan veri tabanı dosyası üzerinde işlem yapacağım. Bu amaçla forma eklediğimiz Table nesnesinin üzerine sağ fare ile tıklayıp table nesnesi aracılığı açılan dosyanın üzerinde işlem yapmak istenen alanları için önceden bazı tanımlamalar yapılmak için Fields Editor komutunu verdim. Table nesnesinin adını içeren boş bir diyalog kutusu ekrana gelir.
Açılan bu diyalog kutusunun içinde iken sağ fare tuşuna basılıp Add fields komutu verilirse veri tabanı dosyasında hazırlanan alanlar eklenir.

Çalışma anında üzerinde bulunan kaydın SOYAD alanının içeriği Table1SOYAD nesnesinin Text özelliğinde, AD alanının içeriği ise Table1AD nesnesinin tex özelliğinde saklanır. Table nesnesini içeren forma sahip olan proje çalıştırılır çalıştırılmaz kayıt okuma kafası daha önce seçilen veri tabanı dosyasındaki ilk kaydın üzerine konumlanır. Şimdi örnek olması için çalışma üzerinde tıklama yapıldığı zaman işletilecek bir program satırını projedeki tek formun FormClick yord***** dahil edeceğim.
ShowMessage (Table1AD.Text);

Table nesnesi yardımı ile açılan ve her alanı için Fields Editor penceresinde tanımlama yapılan bu dosyadaki aktif kaydın bütün içeriğini ekrana getirmek için üzerinde çalıştığım projenin tek formuna 5 Label ve 5 Edit kutusu ilave ettim. Table1AD nesnesine ait text değişkeninin içeriği, Edit1 kutusuna Table1SOYAD nesnesine ait text değişkeninin içeriği Edit2 metin kutusuna ilave edilir.
Bu işlemler çalıştırılır çalıştırılmaz otomatik olarak yapılacağı için, bu işlemleri yapacak program satırlarını forma ait FormCreate yord***** yazdım.
begin
Edit1Text := Table1AD.Text;
Edit2Text := Table1SOYAD.Text;
Edit3Text := Table1ADRES.Text;
Edit4Text := Table1TEL.Text;
Edit5Text := Table1SEHIR.Text;
Proje çalıştırılır çalıştırılmaz aşağıdaki ekran görüntüsü elde edildi.


15.1 Dosyadaki Kayıtlar Arasında Dolaşmak

Daha önce hazırladığım ADRES.DBF adındaki veri tabanı dosyasında yalnızca bir kayıt vardı. Database Desktop programını çalıştırdım ve dosyadaki kayıt sayısını üçe çıkardım.

Çalışma anında tablodaki bir sonraki kayıt üzerine gitmek için projenin formuna Sonraki Kayıt başlığına sahip bir düğme dahil ettim. Table kontrolü yardımı ile açılan veri tabanı dosyasındaki kaydın üzerine gitmek için Next metodundan yararlanılmaktadır. Bu amaçla çalışma anında formdaki düğmenin üzerinde tıklama yapıldığı zaman işletilmek üzere düğmeye ait Click yordamını şöyle düzenledim:

Begin;
Table1.Next;
Edit1.Text := Table1AD.Text;
Edit2.Text := Table1SOYAD.Text;
Edit3.Text := Table1ADRES.Text;
Edit4.Text := Table1TEL.Text;
Edit5.Text := Table1SEHIR.Text;
Eğer çalışma anında bir önceki kayda dönmek istiyorsanız eklenen düğmeye Prior metodu uygulanmalıdır. Yani;
Begin;
Table1.Prior;
Edit1.Text := Table1AD.Text;
Edit2.Text := Table1SOYAD.Text;
Edit3.Text := Table1ADRES.Text;
Edit4.Text := Table1TEL.Text;
Edit5.Text := Table1SEHIR.Text;

15.2 Dosyalarda Yeni Kayıtlar Eklemek ve Kayıtlarda Değişiklik Yapmak

Table nesnesi ile açılıp erişim sağlanan veri tabanı dosyasının sonuna yeni bir kayıt eklemek için Append metodundan yararlanmaktır. Yeni Kayıt adlı ikona aşağıdaki program satırları yazılır;
Begin;
Table1.Append;
Edit1.Text := ‘ ’;
Edit2.Text := ‘ ‘;
Edit3.Text := ‘ ‘ ;
Edit4.Text := ‘ ‘;
Edit5.Text := ‘ ‘;
Edit1.SetFocus;
Önce dosyanın sonuna içeriği boş bir kayıt eklenir. Ardından aktif kaydın içeriğini görüntülemede kullandığımız metin kutularının içeriğini silmektir. SetFocus metodu yardımı ile ekleme noktası bilgi girişi için formdaki ilk metin kutusunda hazır olarak bekler. Çalışma anında bu metin kutularına girilecek bilgileri dosyanın sonuna yazılan boş kayda aktarmak için Forma “Değiştir” başlığına sahip bir düğme ekledim. Üzerinde bulunulan kaydın içeriğin formdaki metin kutularına girilmiş veya değiştirilmiş bilgiler ile değiştirmek için UpdateRecord metodundan yararlanılmaktadır. Bu nedenle ortama ait Click yordamını aşağıdaki gibi düzenledim;
Begin;
Table1.Edit;
Table1AD.Text := Edit1.Text;
Table1SOYAD.Text := Edit2.Text;
Table1ADRES.Text := Edit3.Text;
Table1TEL.Text := Edit4.Text;
Table1SEHIR.Text := Edit5.Text;
Table1.UpdateRecord;


15.3 Dosyadan Kayıt Silmek
Veri tabanı dosyasından hangi kaydı silmek istiyorsanız , o kaydı aktif hale getirip Delete metodunu kullanmanız yeterlidir. Bunun için form üzerine Kayıt Sil düğmesi ekledim. Ardından bu yordamın Click ort***** aşağıdaki program satırını yazdım.
Begin ;
Table1.Delete;
Table1.Prior;
Edit1.Text := Table1AD.Text;
Edit2.Text := Table1SOYAD.Text;
Edit3.Text := Table1ADRES.Text;
Edit4.Text := Table1TEL.Text;
Edit5.Text := Table1SEHIR.Text;
end;
Bütün gelişmiş programlarda olduğu gibi kayıt silme işlemi öncesi kullanıcıdan onay alabilirsiniz. Kayıt silme işlemi öncesinde kullanıcıdan onay almak için “Kayıt Sil” başlıklı düğme için hazırladığım program kodlarını aşağıdaki gibi düzenledim.
Var;
Tus : Integer;
Begin;
Tus := Application.MessageBox(‘Kayıt Silinsin mi?’,
‘Borland Delphi’, mb_YesNo);
if Tus = IDYES Then
Begin;
Table1.Delete;
Table1.Prior;
Edit1.Text := Table1AD.Text;
Edit2.Text := Table1SOYAD.Text;
Edit3.Text := Table1ADRES.Text;
Edit4.Text := Table1TEL.Text;
Edit5.Text := Table1SEHIR.Text;

Bu düzenlemelerden sonra program çalıştırılacak olunursa aşağıdaki mesaj kutusu ile karşılaşılır.

15.4 Veri Tabanı Dosyalarını Açmak ve Kapatmak

Bu bölümün daha önceki sayfalarında belirtildiği gibi Delphi projeleri içerisinde Table nesnesi ile temsil edilen veri tabanı dosyasını açmak için tasarım anında Object Inspector penceresinde Table nesnesine ait Action değişkenine True değerini aktarmak yeterli oluyordu. Bunun dışında çalışma anında program yazarak Table nesnesine ait Action değişkenine True değeri aktarılarak dosya açılabiliyordu. Bu anlatılanların dışında, Open metodu ile veri tabanı dosyası açılabilir ve Close metodu ile kapatabilirsiniz.
Begin
Table1.Open;
Edit1.Text := Table1AD.Text;
Edit2.Text := Table1SOYAD.Text;
Edit3.Text := Table1ADRES.Text;
Edit4.Text := Table1TEL.Text;
Edit5.Text := Table1SEHIR.Text;

15.5 Index Dosyalarını Kullanmak

Daha önce ADRES.DBF dosyasını Database Desktop ile hazırlarken Soyad alanına göre indexleme yapmıştık. Şimdiye kadar hazırlandığın bu indexten yararlanmadım. Bu nedenler kayıtlar ekrana kayıt edildikleri sıra ile geldi. Soyada göre kayıtları ekrana getirmek için Table nesnesi seçili iken Object Inspector penceresinde IndexName özelliğe ait liste kutusu açılır. Soyad adlı Index seçilir.
Bunun dışında Index tanımlanması yapılan diyalog kutusunda Unique adında bir ony kutusu vardı. Eğer bu aktif hale getirilirse çalışma anında yalnızca aynı soyada sahip ilk kayda erişim sağlanabilir. Bunun için Form Click ort***** şu satır yazılır:
Begin
Table1.Index := ‘’ ;
Eğer tasarım anında Object Inspector penceresi aracılığı ile bir indexi seçmediyseniz, çalışma anında geçerli olmak üzere program kodu yazarak Index name değişkeninin içeriğini değiştirip daha önce hazırlamış olduğunuz indexi devreye sokabilirsiniz.

Table1.IndexName := 'SOYAD';
Table1.Open;
Edit1.Text := Table1AD.Text;
Edit2.Text := Table1SOYAD.Text;
Edit3.Text := Table1ADRES.Text;
Edit4.Text := Table1TEL.Text;
Edit5.Text := Table1SEHIR.Text;

15.6 Dosyadaki İlk ve Son Kaydın Üzerine Gitmek

Delphi projesi içerisinde Table nesnesi ile temsil edilen veri tabanı dosyasındaki ilk kaydın üzerine bir seferde gitmek için First değiminden faydalanılır.
Table1.First;
Edit1.Text := Table1AD.Text;
Edit2.Text := Table1SOYAD.Text;
Edit3.Text := Table1ADRES.Text;
Edit4.Text := Table1TEL.Text;
Edit5.Text := Table1SEHIR.Text;

Eğer istenilen kayda belirli aralıklarla gidilmek isteniyorsa o zaman program satırına şunları yazmak gerekir;

Table1.MoveBy(Adım değeri);
Edit1.Text := Table1AD.Text;
Edit2.Text := Table1SOYAD.Text;
Edit3.Text := Table1ADRES.Text;
Edit4.Text := Table1TEL.Text;
Edit5.Text := Table1SEHIR.Text;

15.7 Dosya Sonu Kontrolü – EOF ve BOF Özellikleri

Kayıt okuma kafasını dosya sonunda olup olmadığını Table nesnesine ait EOF özelliğinden yararlanılarak öğrenilir. Eğer kayıt okuma kafası dosyanın sonunda ise EOF özelliği True değerine, değilse False değerine sahip olur. EOF özelliğinin işlevini görmek için çalıştığım projenin bir sonraki kayda gitmede kullandığımız yordamı aşağıdaki gibi değiştirdim.

Table1.Next;
Edit1.Text := Table1AD.Text;
Edit2.Text := Table1SOYAD.Text;
Edit3.Text := Table1ADRES.Text;
Edit4.Text := Table1TEL.Text;
Edit5.Text := Table1SEHIR.Text;
If Table1.Eof = True then
ShowMessage ('Dosyanın Sonundasınız!!!');

15.8 Veri Tabanı Dosyasını Yalnız Okunabilir Yapmak – (Read Only)

Eğer table nesnesi aracılığı ile açtığınız dosyada herhangi bir değişiklik yapmak istemiyorsanız Object Inspector penceresinde Table nesnesine ait ReadOnly değişkenine True değerini aktarabilirsiniz. Ancak açık veya Active değişkeni True değerini içeren bir Table nesnesinin ReadOnly özelliğinde değişiklik yapmak mümkün değildir. Bunun için Table nesnesine ait Active değişkenine false değerini aktarıp ondan sonra ReadOnly değişkenine True değerini aktarmanız gerekir. ReadOnly değişkenine true değerini aktardıktan sonra tekrar active değişkenine True değerini aktarıp dosyanın içeriğine erişim sağlayabilirsiniz.
 
Üst Alt