เรื่องขั้นตอนการเขียนโปรแกรมในระบบLAN

   
แตยังไม่เข้าใจเรื่องการเขียนในระบบLANค่ะแตควรจะใช้อย่างไรดีคะ ใช้แบบ RLOCK() หรือแบบ buffer mode คะ แตเคยลองเขียนดูมันแบบนี้ค่ะ
USE member IN 1
cursorsetprop("buffering",2,"member")
**พอuser1แก้ไขข้อมูล ทำอย่างไรให้user2รู้คะว่ากำลังมีการแก้ไขข้อมูลอยู่***
แต
4 ม.ค. 48 เวลา 10:13:40 น. --> 203.118.113.198
   
   
ต้องสร้างตัวแปรมารับค่า เช่น cLock = cursorsetprop("buffering",2,"member") ถ้า cLock ได้เท่ากับ .T. ก็แสดงว่าสามารถทำการใด ๆ กับข้อมูลได้ แต่ถ้าได้ .F. ก็แสดงว่ากำลังมีคนใช้งานอยู่ครับ ลองดูนะครับ
foxisan
4 ม.ค. 48 เวลา 13:19:48 น. --> 202.5.88.144, w
  
   
ใช้เขียนตอนช่วยไหนของ Code คะ แตลองดูแล้วมันก็ยังเช็คสถานะการล็อคไม่ได้ค่ะทั้งๆที่ record ก็ล็อคแล้ว แตลองทำอย่างนี้ค่ะ
1.เปิด Fox รันขึ้นมา โดยset แต่ละครั้งที่ Command Window ดังนี้ค่ะ
SET MULTILOCKS ON
OPEN DATABASE data.dbc SHARED
use member
CURSORSETPROP("Buffering",4,"member")
BROWSE
-ถึงจุดนี้แตก็ลองแก้ไขข้อมูลในrecord(recordที่ 1)โดยที่ยังไม่ออกจากrecordนั้น(ซึ่งstatus bar ก็บอกว่า Record Locked)

ทีนี้แตก็
2.เปิด Fox รันขึ้นมาอีกตัว โดยset แต่ละครั้งที่ Command Window ดังนี้ค่ะ
SET MULTILOCKS ON
OPEN DATABASE data.dbc SHARED
use member
CURSORSETPROP("Buffering",4,"member")
goto 1
-ถึงจุดนี้แตต้องการเช็คสถานะการล็อคโดยใช้ทั้ง
?isrlocked() ค่าที่ได้ก็คือ .F.
หรือ
?sys(2011) ค่าที่ได้ก็คือ Record Unlocked
**งงจริงๆเลยค่ะ** ทั้งๆที่ Fox อีกตัวนึงที่เปิดตอนแรกใน status bar ยังบอกว่า Record Locked อยู่เลยทีนี้ลองใช้
?sys(2011) ใน Command Window ของ Foxที่เปิดตอนแรก ค่าที่ได้คือ Record locked
?isrlocked() ค่าที่ได้ .T.
มีผิดพลาดตรงไหนหรือเปล่าคะ ทำไม Foxที่เปิดทีหลังถึงเช็คสถานะการLockไม่ได้
(ฐานข้อมูลก็เป็นตัวเดียวกันและPathเดียวกันค่ะ) สงสัยจริงๆ
แต
4 ม.ค. 48 เวลา 15:49:57 น. --> 203.118.120.102
  
   
ปรกติที่ทำ ถ้าใช้ Buffer Mode ก็จะให้ VFP มันจัดการไป จะไม่มีการ Lock Record ซ้ำ เช่น
คนที่ 1 ทำการแก้ไข record นี้อยู่
แล้วคนที่ 2 ก็มาทำการแก้ไข record เดิมที่คนที่ 1 เปิดอยู่
ทั้ง 2 คนก็จะเข้าไปแก้ไขใน record นั้นได้ทั้งคู่ แต่ตอนบันทึก ถ้า 1 บันทึก แล้ว 2 บันทึกตาม
ข้อมูลที่ได้ก็จะเป็นของคนที่ 2

OPEN DATABASE data.dbc SHARE
SET MULTILOCK ON
USE member SHARE IN 0
=CURSORSETPROP("Buffering",3,"member") && or 5
SELECT member
GO TO 1
EDIT
เกษม
5 ม.ค. 48 เวลา 10:41:17 น. --> 202.133.132.140
  
   
แนะนำครับ ผมก็เป็นคนหนึ่งที่เมื่อก่อนไม่ค่อยเข้าใจไอ้เรื่อง วิธีการใช้แบบ FLOCK() RLOCK() หรือแบบ buffer mode เลยลองข้ามมาใช้ Database พวก Client-Server โดยใช้ MySQL ซึ่งคุณจะหมดห่วงไอ้เรื่องพวกนี้ไปได้เลยครับ
tong
5 ม.ค. 48 เวลา 15:00:41 น. --> 203.157.14.245,
  
   
แล้วDatabase พวก Client-Server อย่าง SQL-Server , MySQL ไม่จำเป็นต้องใช้ buffter mode หรือ flock(),rlock() หรือคะ
แต
6 ม.ค. 48 เวลา 10:25:39 น. --> 203.118.113.152
  
   
set excl off
use xxxx
if flock()
edit
else
clea
@ 12,30 say "Please wait ! file is locked "
wait "Press anykey to return"
retu
endi
unlo
nn
13 ก.พ. 48 เวลา 18:33:07 น. --> 203.156.73.44,
  
ขอเชิญร่วมตอบคำถามครับ
 
ผู้ตอบ :
รหัสผ่าน :
รูปภาพ :
คำตอบ :