1

Konu: Hangisi daha hızlı ve güvenli

Merhabalar

Programın çalışması sırasında birden fazla kullanıcı stok ve stok hareket dosyasını kullandığında zaman zaman kayıtta (replace) problem yaşıyorum. hata vermiyor ama bazı kayıtları yapmadığını sonradan görüyorum. dosyaları select ile seçtikten sonra ilgili kayda gitmek için find ya da locate kullanmam güvenlik ya da hız açısından çok şey değiştirir mi ? replace sırasında record u kilitlemem mutlaka gerekir mi? bildiğim kadarı ile vfp bunu zaten yapıyor. forumda okuduğum kadarı ile çok sayıda kullanıcı çok sayıda dosyayı kusursuz kullanabiliyor.
güvenli multi user için ekstra hangi önlemleri alabilirim ?

Şimdiden teşekkür ederim.

2

Re: Hangisi daha hızlı ve güvenli

asagidaki linkleri incelersen sanırım aradigin yanitlari bulacaksin

http://www.fox4um.com/topic/356/multi-user-icin/
http://www.fox4um.com/viewtopic.php?id=208

3

Re: Hangisi daha hızlı ve güvenli

eğer autolock ayarlamadıysan kaydı kitlemen gerekir.
find komutunu kullanmanı tavsiye etmem. seek kullan. find'ın şimdi hatırlayamadığım bazı sıkıntıları vardı. zaten foxpro dos'ta bile find kullanmayın diyor.
foxpro 2.0'dan beri locate her ne kadar indeksli çalışsa da yine de seek'ten yavaş çalışıyor. seek daha iyi bu yüzden.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

4

Re: Hangisi daha hızlı ve güvenli

bazen replace komutu eğer açık dosyalar içinde bir EOF() olan bir dosya varsa tam çalışıp replace yapmıyor.

5

Re: Hangisi daha hızlı ve güvenli

mehmet ali akbaba yazdı:

bazen replace komutu eğer açık dosyalar içinde bir EOF() olan bir dosya varsa tam çalışıp replace yapmıyor.


O zaman doğru çalışıyor:
bildiğim kadarı ile zaten EOF()=.t. koşulu record pointerin dosya sonunu bulup kayıt göstermediği zaman oluşuyor.

VFP9 SP2

6

Re: Hangisi daha hızlı ve güvenli

replace for dersen eof() un hiçbir önemi yoktur. for kullanmadığında eğer eof() ise program hata verir.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

7

Re: Hangisi daha hızlı ve güvenli

Replace'i baska bir calisma alanindan yapiyorsan ve o alanda eof() ise hicbir degisiklik yapilmaz, hata da vermez. Ornek:

Visual Fox Pro
CLOSE DATABASES all

clear
USE (_samples+'data\customer')
SELECT 0
USE (_samples+'data\orders')
GO bottom
SKIP
 
lcCompany=customer.Company
replace customer.Company WITH 'Olmadi'
? 'Olmadi:',Customer.Company
 
replace customer.Company WITH 'Oldu' IN 'Customer'
? 'Oldu:',Customer.Company
 
replace customer.Company WITH m.lcCompany IN 'Customer'
? 'Orijinal:',Customer.Company

IN 'Alias' kullanarak bu tehlikeyi ortadan kaldirabilirsin.

Kayit kilitlemeye gelince, replace kayit kilitlemez tablo basligini kilitler. Update ise kayit kilitler. Replace xbase serisi komut, update ise SQL ve set bazli. Tercihim Update kullanmak.

Otomatik kayit kilitlemek yerine ben "set reprocess to 1" kullaniyorum.

Buffersiz calisinca, multiuser ortamlarda replace'in ilginc surprizleri olabiliyor. Ornegin ayni kaydi hemen hemen ayni anda iki kisi degistirdiginde, son degistireninki gecerli ama ilk degistiren o kayittan ayrilip tekrar yuklemeden bu degisikligin farkina bile varamiyor. Yani VFP aslinda o kadar da guvenilir bir ver tabani degil, kendin isini saglama almalisin. Buffer kullaninca tableupdate(), curval(), oldval() ... ek kontroller geliyor.

Uzun lafin kisasi

güvenli multi user

istiyorsan VFP disinda bir database kullan derim. Benim tercihim MS SQL Server.