Ağ ortamında kayıtta sorun

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Ağ ortamında kayıtta sorun

Mesaj gönderen sinancaylak »

Merhaba Paradox veri tabanına ağ üzerinden kayıt yaptırmak isttiyorum ama bir sorunum var forumdaki BDE ayarları ile ilgili makaleyi okudum program çalışyor yalnız iki bilgisayardada program açık olduğunda veri tabanını yalnız birisi kullanabiliyor yani öteki kayıt girdiğinde kayıt giriyormuş gibi gözüküyo ama database'e yazmıyor ağ ortamında veri tabanını nasıl çoklu kullanabilirim yada interbase tipi bişeyler mi kullanmam lazım bana yardımcı olursanız sevinirim. İyi çalışmalar
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Merhaba
1. Kullandığın alias ın configuration sekmesinde netdır dizinine veri tabanının yolunu göstermen gerekiyor.
2. Daha sonra system Init in içinde Local Share nin değerini true olarak değiştir.
Problemin Çözülecektir.
Ben sadece kayıt girmek ve görüntülemek için kullandığım bir program PARADOX kullanıyorum. Yani kayıtlar üzerinde fazla değişiklik yapılmıyor.
20 makina kesinlikle problem çıkarmadan çalışıyor. Ama sürekli kayıt güncellemesi ve değişikliği yapılan bir programsa veri tabanını değiştirmeni tavsiye ederim.

Kolay gelsin...
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

ASE Teşekkür ederim ama ben o söylediklerini denedim ve yaptım zaten o özellikleri etkinleştirmeden program çalışmıyor ama diğer program çalıştığında diğer makinalar veri tabanını kullanamıyor hala diğer akdaşlardan yardım bekliyorum
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

bağlantıların requestlive özelliklerini false yap. Aksi durumda sadece bir kullanıcının kullanımına açık olur zaten....
Kolay gelsin...
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
sako
Üye
Mesajlar: 476
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Mesaj gönderen sako »

table için close-open kullan.
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Mesaj gönderen sinancaylak »

ASE Hocam ben sizin demek istediğinizi tam olarak anlayamadım o özellikleri nereden değiştireceğim
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Lütfen Yardım edil

Mesaj gönderen sinancaylak »

Ben bu ağ kayıt problemi hala aşamıyorum söylediğiniz şeyleri uygulayarak halen daha kayıt giremiyorum ve aynı sorunum devam ediyor bana ayrıntılı olarak birisi anlatabilirmi ?
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Merhaba,

Projenin DataModule (DM) unda Database, Tablo ve Query ler olduğunu varsayıyorum.

DM nin OnCreate inda

Kod: Tümünü seç

procedure TDM.DMCreate(Sender: TObject);
var
  Buf : array[0..256] of char;
  AppDir: string;
begin
  Screen.Cursor := crHourglass;
  AppDir := ExtractFilePath(Application.ExeName);
  Database1.Connected := False;
  Database1.Params.Clear;
  Database1.Params.Add('PATH=' + AppDir); // data klasörü programın (EXE nin) olduğu yer.
 
  if Session.Active then
    Session.Close;
  Session.NetFileDir := AppDir; //ExtractFilePath(Application.ExeName);
  GetTempPath(255, Buf);
  Session.PrivateDir := Buf;  // burada pdoxusrs.net dosyasını programın bulunduğu yer olarak gösteriyoruz
  Session.Open;
 
  try
    Database1.Connected := True;
  except
    Uyari('Veritabanı açılamıyor');
    Application.Terminate;
    Halt;
  end;
  if not Table1.Active then
    Table1.Open;
......
 // diğer tablo ve sorgu işlemleri.
// bu arada Database, Table ve Query lerin Exlusive özelliklerini False yapıyorsun!
  Screen.Cursor := crDefault;
end;

Bundan sonra her tablo için AfterPost event larını aşağıdaki şekilde yaz.
Tek birine yazıp diğerlerinin afterpost una aynısını atıyabilirsin.

Kod: Tümünü seç

procedure TDM.Table1AfterPost(DataSet: TDataSet);
begin
  if DBISaveChanges((DataSet As TBDEDataSet).Handle) <> DBIERR_NONE then
    Uyari('Güncelleme işlemi başarısız oldu..!'); // bilgiler tampon da kalmasın diye.
  DataSet.Refresh;
end;
Programı kurduğun makinada prog diye bir klasör açıp tam paylaşım ver ve prog exe ni ve tablolarını buraya at.
Daha sonra diğer makinalardan da bu exe ye kısayol yaparsın.

Hepsi bu kadar. Kolay gelsin.

Recep ŞİMŞEK
sinancaylak
Üye
Mesajlar: 151
Kayıt: 30 Oca 2004 09:16
Konum: Manisa

Teşekkür

Mesaj gönderen sinancaylak »

Hocam Verdiğiniz kodları yaptım ve artık 2 bilgisayar kayıt girebiliyor yardımlarınız için teşekkür ederim.
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Mesaj gönderen mudipasa »

s.a.
rsimsek abi paradoxun ağ ortamında kullanılmasında yaptığın çözüm denemedim ama çok güzel ve değişik bir yöntem. teşekkür ederim. yalnız benim iki sorum var
1- biraz acemice ama dm ye table lerin session larını dm e ekleyeceğimiz session mı olacak ? (sizin belirttiğiniz Session)
2- tablelerin after post olayında ben Table1.Flushbuffers kullanıyorum. belleği boşaltmak için. böylelikler elektrik kesilsede veri kaybı olmuyor. bir çok yöntem denedim (sizinkide belkide vardır içinde) işe yaramadı. benim yöntemimde ağ tabanlıda sorun çıkarırmı?
Cevapla