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.
firebird/interbase bağlantı hakkında
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
anladığım kadarıyla yazıyorum.
anlamadığım noktalar olmuş olabilir.
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.
anlamadığım noktalar olmuş olabilir.
ibdatabase bileşeninde AfterDisconnect olayı var. bu olayı kullanabilirsiniz.örneğin ibx de bir onconnectionlost procedure ü gibi bir şey olmadığı için
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.
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...
Sevgiler...
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;
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
tekrar teşekkür eder saygılar sunarım
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
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....showtime yazdı:bir event alert gibi otomatik bir çözümü nasıl yaratacağız.
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
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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Şair Hocam,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...
Bu sefer soru sormayacağım. Tam aradığım sorunun cevabını mesajınızda buldum. Çok teşekkürler zahmetleriniz için...
Sevgi, Saygı.....