  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		kmkna1103
 
 
  註冊時間: 2008-05-08 文章: 119 來自: 台灣
  第 1 樓
  | 
		
			
				 發表於: 星期五 八月 08, 2014 2:32 pm    文章主題: 更新衝突 | 
				     | 
			 
			
				
  | 
			 
			
				| VFP6+SQL2000 用VIEW的方式,如果有2個使用者編輯同一筆記錄在存檔,後存檔者會發生更新衝突,請問有什麼方式能避開這個問題呢? | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 2 樓
  | 
		
			
				 發表於: 星期五 八月 08, 2014 2:37 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				看 HELP.
 
 
 
更新衝突是必然出現的現象.
 
只有看你選擇什麼方式處理.
 
 
例如,先來的人事先LOCK 記錄,後來的人就不能改.
 
SQL SERVER 也可以LOCK記錄,只是很少人這樣搞.
 
 
或是採取先寫入優先,後面的人只好放棄重做修改.
 
 
或是採取後寫入優先,後面的人可以正常存檔,
 
但先改的人會覺得怎麼不是我改的那樣.
 
 
 
 
通通都有優缺. _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		kmkna1103
 
 
  註冊時間: 2008-05-08 文章: 119 來自: 台灣
  第 3 樓
  | 
		
			
				 發表於: 星期五 八月 08, 2014 3:10 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 謝謝提供參考 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		whh
 
 
  註冊時間: 2010-04-16 文章: 166
 
  第 4 樓
  | 
		
			
				 發表於: 星期二 八月 12, 2014 5:45 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				有一個很的方法,開一個 Table  → 紀錄目前使用中的電腦名稱
 
 
EX: 點修改按鈕 → 立馬寫入那個Table → 有人也突然點那筆要修改的話,就顯示『目前』某某台電腦異動中,不可修改!
 
 
存檔後記得要把Table資料砍掉
 
 
破關  
 
 
缺點:一開始那個還在修改的人,還沒存檔就當機就GG了....XD | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		perry
 
 
  註冊時間: 2014-07-20 文章: 203
 
  第 5 樓
  | 
		
			
				 發表於: 星期二 八月 12, 2014 11:45 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				參考4樓的做法變通一下試試!!
 
 
產生以該筆資料為檔名的Table,
 
並以專用模式開啟.
 
 
要編輯資料先判斷該資料的Table 可不可以專用,
 
應可避免重疊編輯.
 
 	  | 代碼: | 	 		  
 
**
 
IF MY_EXCL('EXEUSNOW.DBF')=1
 
   =MESSAGEBOX('�{式正在執行中,不可重複執行!!',0+16+0,'警告')
 
    retu
 
ENDI
 
CREA DBF EXEUSNOW (firstmk C(1))
 
USE
 
SELE 0
 
USE EXEUSNOW EXCL
 
.
 
.
 
use in exeusnow
 
retu
 
***********
 
**MY_EXCL.prg
 
***********
 
PARA uchk_file
 
IF PARA()<1
 
    RETU 2
 
ENDI
 
PRIV chk_file,file_chk,old_error
 
chk_file=uchk_file
 
file_chk=0
 
old_error=ON('ERROR')
 
ON ERRO   DO MY_EXCL1
 
SELE 225
 
USE (chk_file) EXCL
 
ON ERRO &old_error
 
IF USED(225)
 
    USE   IN 225
 
ENDI
 
RETU file_chk
 
 
********************************************************************************
 
PROC MY_EXCL1
 
PRIV err_no
 
file_chk=IIF(ERRO()=41,0,IIF(ERRO()=1,2,1))
 
RETU
 
ENDPROC
 
 | 	 
  | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |