Program içinden veritabanı oluşturma

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
NeverFear
Üye
Mesajlar: 69
Kayıt: 20 Tem 2004 09:41
Konum: İzmir

Program içinden veritabanı oluşturma

Mesaj gönderen NeverFear »

FormCreate veya FormShow yordamına yerleştirebilirsiniz.

Kod: Tümünü seç

public
{ Public declarations }
end;

var
Form1: TForm1;
PATH, DATA_PATH: string;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
{$I-}
GetLastError;
PATH:= ExtractFilePath(ParamStr(0)); //İşletim Sistemi ve programınız sizin kesin olarak
//belirlediğiniz sürücüye(genelde C sabit diski) kurulmamış olabilir.
//İçeriğinde File geçen fonksiyon kullanımlarından önce {$I+ veya -} ifadesini yazmanızda
//yarar var. {$IOCHECKS ON} -> InputOutputCheck ON(Giriş-ÇıkışKontrol Açık) anlamına
//gelir. {$I-} olması durumunda IOResult fonksiyonu ile kontrol etmelisiniz.
//Örnek --> ChDir(PATH); if IOResult <> 0 then MkDir(PATH); satırlarında olduğu gibi.
//Ayrıca, GetLastError; son işlenen hatayı döndürür ve ExtractFilePath(ParamStr(0));
//programınızın çalıştığı sürücü ve dizinin kesin yolunu belirler.
** Örnek;
   Programınızda siz C:\Ticari Modül\Data şeklinde bir Alias tanımladınız ve bütün
   *.db,*.px,*.x0 ... data dosyalarınız bu dizinde olması gerekiyor. Kendi kendinize
   diyorsunuz ki; bu dizinde olması şart aksi taktirde program çalışmasın, kopyalama
   olmasın ve herşeyi ben kontrol etmeliyim. İşte bu, ilk hataya düştüğünüzün açık bir
   delili. Ya kullanıcının C: isimli sabit diski yoksa ve işletim sistemini F: sürücünden
   çalıştırıyorsa NE YAPACAKSIN..?  F: = C: şeklinde bir kodlama yapabilir misin?
   Diyeceksin ki, C: her bilgisayarda olmazsa olmaz. Ama, senin olmazsa olmazın
   müşterinin OLURSA OLUR'udur.
** Bu nedenle, programlarınızda Alias tanımlamayınız. Unutmayınız ki, kullanıcının
   hertürlü program kırıcı hareketini önce siz bilmelisiniz. Kullanıcıya bu konuda
   yetki tanımayın, onu cesaretlendirmeyin. Programınızın mutlak hakimi siz olun. Hata
   ayıklamayı mutlaka yapın
//
if PATH[Length(PATH)] = '\' then PATH:= Copy(PATH,1,Length(PATH)-1);
ChDir(PATH);
if IOResult <> 0 then MkDir(PATH);
DATA_PATH:= PATH+'\Data';
ChDir(DATA_PATH);
if IOResult <> 0 then MkDir(DATA_PATH);
if FileExists(DATA_PATH+'\Deneme.db') then
begin
with Table1 do
begin
Active:= False;
DatabaseName:= DATA_PATH+'\';
TableName:= 'Deneme.db';
TableType:= ttParadox;
Active:= True;
end;
end
else begin
with Table1 do
begin
Active:= False;
DatabaseName:= DATA_PATH+'\';
TableName:= 'Deneme.db';
TableType:= ttParadox;
with FieldDefs do
begin
Clear;
Add('SiraNo', ftInteger, 0, False);
Add('MusAd', ftString, 30, False);
Add('MusSoyad', ftString, 30, False);
Add('Adres', ftString, 30, False);
Add('Tarih', ftString, 8, False);
end;
with IndexDefs do
begin
Clear;
Add('AnaKey', 'SiraNo', [ixPrimary, ixUnique]);
Add('Key_1', 'MusAd', [ixCaseInsensitive]);
Add('Key_2', 'MusSoyad', [ixCaseInsensitive]);
Add('Key_3', 'Tarih', [ixCaseInsensitive]);
end;
CreateTable;
Active:= True;
end;
end;
end;
Not: Bu tür kodlamayla, müşterinizin çılgınca hareketleri sonucu data kayıplarını
engellemiş olursunuz. Alias tanımlamak herzaman başarılı sonuç vermiyor.
Unutmayınız ki, programlamayla uğraşan ve bunun üzerinden geçimini sağlayan kişi
olarak, kullanıcının hertürlü hareketindeki olasılıkları önceden düşünerek programınızı
bu kriterler dahilinde geliştirmelisiniz.
Yukarıdaki kodlama sadece bir örnek. Sonuçta, programınızı kodlayan sizsiniz.
En kestirme yol, en iyi bildiğiniz yoldur.

İşinizi görmesi dileğimle,
Çalışmalarınızda başarılar dilerim.

NeverFear - kaheri579@hotmail.com
Cevapla