firebird/interbase bağlantı hakkında

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
showtime
Üye
Mesajlar: 29
Kayıt: 28 Şub 2004 04:26
Konum: Konya

firebird/interbase bağlantı hakkında

Mesaj gönderen showtime »

Forumda çok aramama rağmen ustaların bu konuda bir beyin fırtınasına rastlamadım.
ibx bileşenleriyle firebirde bağlanırken basit try except lerle bağlantıyı gerçekleştirebiliyoruz ama program çalışırken bağlantı problemlerinin nasıl çözüldüğü hakkında açıkçası pek fazla yol katedemedim.
örneğin ibx de bir onconnectionlost procedure ü gibi bir şey olmadığı için bunu kendi kendimize nasıl halledeceğiz. veya server daki GDB başka bir yere alındıysa bu da farklı bir reise üretiyor, ip yi bile bile yanlış yazdığımda o da ayrı bir hata mesajı veriyor.
bir acemi olarak yeni geldiğim bu problem bence çok çok önemli.
bu konuda siz değerli ustaların bu konuda bizleri aydınlatmasını rica ediyorum.
Saygılarımla.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

anladığım kadarıyla yazıyorum.
anlamadığım noktalar olmuş olabilir.
örneğin ibx de bir onconnectionlost procedure ü gibi bir şey olmadığı için
ibdatabase bileşeninde AfterDisconnect olayı var. bu olayı kullanabilirsiniz.

gdbnin bulunduğu dizinin değiştirilmesi olayını ise şu şekilde aşabilirsiniz.
gdb dosyasının yolu ini dosyasında tutulur ve yol burdan okunur. gdbnin yolu değiştiği zaman ini dosyasında gerekli satırı değiştirmeniz yeterlidir.
hatta ibx de TIBDatabaseINI adlı bir bileşen var. bunu daha sonra sizin yüklemeniz gerekiyor. ibxtras olarak geçiyor. bdn.borland.com da code central bölümünden bulabilirsiniz.
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Bi text dosya oluştur(Data.pth). İçine database in path ini yaz. program çalışırken o text dosyayı okutup database e bağlan.
database in yeri değiştiğinde o text dosyanın içine yeni path i yaz. (notepad gibi bi text editorle)
eğer database başka bir makina üzerindeyse bu kez ip yi veya makina adını yazıp pathini yaz...

mesela eğer database başka bir makinada ise ip ile:
192.168.1.1:c:\prog\data\deneme.gdb gibi

makina adıyla:
server:c:\prog\data\deneme.gdb

database aynı makinada ise normal path i yazı.
c:\prog\data\deneme.gdb gibi.


Aşağıdaki procedure de bu text dosyayı okuyup database bağlantılarını yapıyor ve tabloları active ediyor...

Kod: Tümünü seç

procedure TAnaForm.FormShow(Sender: TObject);
var
  dosya: TextFile ;
  yol: string;
begin
     AssignFile(dosya,'Data.PTH');
    {$I-}
    Reset(dosya);
    {$I+}
   if IOResult = 0 then begin
      ReadLn(dosya,yol);
      CloseFile(dosya);
Try
      Data.IBData.DatabaseName:=yol;
      Data.IBData.Connected:=True;
      Data.IBTrans.Active:=True;
      Data.StokSabit.Active:=True;
      Data.Uretim.Active:=True;
      Data.Cari.Active:=True;
      Data.Tahakkuk.Active:=True;
      Data.Tahsilat.Active:=True;
      Data.StokView.Active:=True;
      Data.Sabit.Active:=True;
      AboutBox.Free;
except
        On exception do
        raise;
end;
    end
    else begin
       MessageDlg('Data.pth dosyası bulunamadı.Program kapatılacak', mtWarning, [mbOk], 0);
       Application.Terminate;
    end;
end;
Sevgiler...
showtime
Üye
Mesajlar: 29
Kayıt: 28 Şub 2004 04:26
Konum: Konya

Mesaj gönderen showtime »

yardımlar için çok teşekkürler sayın dostlar. ylanız asıl önemli mesele olan bağlantı problemini nasıl aşacağımız. misal pc nin ağla bağlantısı koptu veya firebird server bakım için durduruldu. programın çalışması esnasında bunu nasıl anlayacağım. her query sorgusundan önce connected diyemi soracağım. yoksa bir event alert gibi otomatik bir çözümü nasıl yaratacağız. ki kullanıcıya bağlantının koptuğunu ve yaptığı değişikliklerin veya girdiği kayıtların havaya uçtuğu mesajı verebilelim.
tekrar teşekkür eder saygılar sunarım
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

showtime yazdı:bir event alert gibi otomatik bir çözümü nasıl yaratacağız.
her hangi bir şekilde bağlantı koparsa ibdatabase bileşeninin AfterDisconnect olayı tetiklenir. bu olayı kullanarak kullanıcıyı haberdar edebilirsin. kullanıcının kayıt girmesi zaten sözkonusu olamaz bağlantı kesik olduğu zaman....
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Component Palet in "Interbase Admin" sekmesindeki componentlerı bir incele. Bunları kullanarak ama yazacağın kod la server ın çalışıp çalışmadığını, fileexist ile de connect olmadan önce dosyanın orda olup olmadığını kontrol edersin. eğer bir bağlantı varsa zaten windows dosyanın silinmesine izin vermez, bunu yapmak için server ı down etmek gerek ve sende bunu kontrol ettiğin için senin prog uyarıyı verecektir.

kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Salih
Üye
Mesajlar: 250
Kayıt: 11 Mar 2004 05:36

Mesaj gönderen Salih »

sair yazdı:Bi text dosya oluştur(Data.pth). İçine database in path ini yaz. program çalışırken o text dosyayı okutup database e bağlan.
database in yeri değiştiğinde o text dosyanın içine yeni path i yaz.
Sevgiler...
Şair Hocam,

Bu sefer soru sormayacağım. Tam aradığım sorunun cevabını mesajınızda buldum. Çok teşekkürler zahmetleriniz için...
Sevgi, Saygı.....
Cevapla