  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		藍薰
 
 
  註冊時間: 2004-01-15 文章: 65
 
  第 1 樓
  | 
		
			
				 發表於: 星期日 二月 25, 2007 2:30 pm    文章主題: 唉!BufferMode 為何我搞不懂你呢?? | 
				     | 
			 
			
				
  | 
			 
			
				請教各位路過的VFP大俠
 
如題所說的到底要如何正確使用它呢?
 
 
我舉二個我的例子說明好了
 
1.有三個資料庫收款簿.支票資料.電匯資料全部的BufferMode都設定2,當多人輸入或修改或瀏覽資料偶而會出現〞嘗試鎖定中..〞只要先進去的跳開就正常了,我曾搜尋過有關BufferMode好像是說=2是列(保守)的鎖定,=5是表格(開放)的鎖定,那依據我解讀的意思,是不是應該將主資料庫(收款簿)保持2,支票.電匯資料改為5,因為支票和電匯明細會有多筆資料所以應該是開放式(5)呢???
 
 
2.另一例子是我目前的作法幾乎都是這樣,只要是單一資料庫的建立比如說建立員工資料BufferMode設定=2,那因會用到其它的資料庫,例如部門資料或其它資料庫,我BufferMode都設定=5,這樣的作法對嗎????    | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		nelsonchuang
 
 
  註冊時間: 2003-09-04 文章: 564 來自: 臺灣
  第 2 樓
  | 
		
			
				 發表於: 星期日 二月 25, 2007 4:07 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我不曉得你是不是直接開放表格讓使用者修改?
 
如果是,建議你快點改變作法,不改就真的會一直發生同樣的事情 _________________ 大家好,請多指教 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		藍薰
 
 
  註冊時間: 2004-01-15 文章: 65
 
  第 3 樓
  | 
		
			
				 發表於: 星期日 二月 25, 2007 5:19 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | nelsonchuang 寫到: | 	 		  我不曉得你是不是直接開放表格讓使用者修改?
 
如果是,建議你快點改變作法,不改就真的會一直發生同樣的事情 | 	  
 
 
不好意思我不懂你的意思
 
我舉的那2個例子的BufferMode都設錯了嗎 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 4 樓
  | 
		
			
				 發表於: 星期日 二月 25, 2007 6:13 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我覺得兩個例子都錯.
 
 
我的想法是,
 
如果你是一次只處理一筆資料,且一定只有一筆資料時,那就是
 
2(保守列鎖定)或是3(開放列鎖定).
 
差別是3只有寫入時才真正鎖定,2則會一開始編輯就開始鎖定.
 
 
如果你有機會一次處理多筆資料,那就是
 
4(保守表鎖定)或是5(開放表鎖定).
 
差別是5只有寫入時才真正鎖定多筆資料,4則會一開始編輯就開始鎖定.
 
 
而2,3實際上是4,5的一種特例,
 
所以只用4,5也可以.
 
 
因為保守鎖定會限制其他使用者的存取,
 
(你自己也發現第一個使用者跳開就可以)
 
所以有共用性的資料應該盡量減少鎖定時間,
 
讓其他使用者存取,
 
私用性資料則沒有此限制.
 
 
依你的例子來說,
 
支票和電匯明細是私有資料,所以要開放或是要保守都無所謂,
 
(實際上還是有區別,也就是兩個使用者同時編修同一張支票時,4與5的情況不同)
 
但是收款簿因為其他使用者也有可能存取同一筆記錄,反而應使用開放鎖定,
 
讓其他使用者可以讀取資料.
 
 
實際上應用並不是這麼簡單,
 
還必須考慮其他人也修改到同一筆資料的情況.
 
尤其是開放鎖定的情況.
 
其他人讀到的資料是你修改前的資料,
 
當你重新寫入之後,其他人怎麼辦? 
 
 
基本上我只用 1,5 兩種. _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		藍薰
 
 
  註冊時間: 2004-01-15 文章: 65
 
  第 5 樓
  | 
		
			
				 發表於: 星期日 二月 25, 2007 6:43 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				承 syntech 老大所說的,你都用1,5兩種
 
但是我印像中1的用法是不需下tableupdate就會馬上儲存的嗎?
 
那這樣不就讓使用都沒有還原的機會
 
因為我會用到1的情況都是在存在各使用者硬碟下的暫存檔
 
比如說列印的時候將資料放到暫存檔
 
那5的情況都是用到純瀏覽的情況下 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		nelsonchuang
 
 
  註冊時間: 2003-09-04 文章: 564 來自: 臺灣
  第 6 樓
  | 
		
			
				 發表於: 星期日 二月 25, 2007 8:06 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				沒有對或錯的問題,只有好不好用的問題.
 
如果你程式跑得好,你就不會來這邊丟問題,換句話說,這種設定並不適用( 我在講廢話)
 
你這個案例,我以前就遇過,主要的原因來自於原先的設計者一直以為只要用了buffermode,就可以掌控一切,所以表格直接讓使用者改,結果就是存一個檔要花5~10分鐘,結果還不見得ok,使用者只差沒有變成訐譙龍出來唱歌跳舞,天啊~
 
這就是為什麼我會先問你的原因.
 
要解決這個問題,最快的方式(我的方式),就是把資料抄到暫存表格去,讓使用者改,改完之後再抄回去.一切都解決....重要的是,使用者高興怎麼改就怎麼改,只要不存檔,你根本不需理會他們改了什麼..... _________________ 大家好,請多指教 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		藍薰
 
 
  註冊時間: 2004-01-15 文章: 65
 
  第 7 樓
  | 
		
			
				 發表於: 星期日 二月 25, 2007 9:37 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | syntech 寫到: | 	 		  我覺得兩個例子都錯.
 
 
我的想法是,
 
如果你是一次只處理一筆資料,且一定只有一筆資料時,那就是
 
2(保守列鎖定)或是3(開放列鎖定).
 
差別是3只有寫入時才真正鎖定,2則會一開始編輯就開始鎖定.
 
 
如果你有機會一次處理多筆資料,那就是
 
4(保守表鎖定)或是5(開放表鎖定).
 
差別是5只有寫入時才真正鎖定多筆資料,4則會一開始編輯就開始鎖定.
 
 
而2,3實際上是4,5的一種特例,
 
所以只用4,5也可以.
 
 
因為保守鎖定會限制其他使用者的存取,
 
(你自己也發現第一個使用者跳開就可以)
 
所以有共用性的資料應該盡量減少鎖定時間,
 
讓其他使用者存取,
 
私用性資料則沒有此限制.
 
 
依你的例子來說,
 
支票和電匯明細是私有資料,所以要開放或是要保守都無所謂,
 
(實際上還是有區別,也就是兩個使用者同時編修同一張支票時,4與5的情況不同)
 
但是收款簿因為其他使用者也有可能存取同一筆記錄,反而應使用開放鎖定,
 
讓其他使用者可以讀取資料.
 
 
實際上應用並不是這麼簡單,
 
還必須考慮其他人也修改到同一筆資料的情況.
 
尤其是開放鎖定的情況.
 
其他人讀到的資料是你修改前的資料,
 
當你重新寫入之後,其他人怎麼辦? 
 
 
基本上我只用 1,5 兩種. | 	  
 
 
承 syntech 老大所說的,你都用1,5兩種 
 
但是我印像中1的用法是不需下tableupdate就會馬上儲存的嗎? 
 
那這樣不就讓使用都沒有還原的機會 
 
因為我會用到1的情況都是在存在各使用者硬碟下的暫存檔 
 
比如說列印的時候將資料放到暫存檔 
 
那5的情況都是用到純瀏覽的情況下 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		藍薰
 
 
  註冊時間: 2004-01-15 文章: 65
 
  第 8 樓
  | 
		
			
				 發表於: 星期日 二月 25, 2007 9:42 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | nelsonchuang 寫到: | 	 		  沒有對或錯的問題,只有好不好用的問題.
 
如果你程式跑得好,你就不會來這邊丟問題,換句話說,這種設定並不適用( 我在講廢話)
 
你這個案例,我以前就遇過,主要的原因來自於原先的設計者一直以為只要用了buffermode,就可以掌控一切,所以表格直接讓使用者改,結果就是存一個檔要花5~10分鐘,結果還不見得ok,使用者只差沒有變成訐譙龍出來唱歌跳舞,天啊~
 
這就是為什麼我會先問你的原因.
 
要解決這個問題,最快的方式(我的方式),就是把資料抄到暫存表格去,讓使用者改,改完之後再抄回去.一切都解決....重要的是,使用者高興怎麼改就怎麼改,只要不存檔,你根本不需理會他們改了什麼..... | 	  
 
 
nelsonchuang老大或許這是你吃過buffermode虧的經驗談,但我總覺得既然buffermode有5種模式可用,應該有其可取之處,只是不知道竅門而已,因為照你的寫法那我的資料庫不下上百個(有3大系統)那樣工程有點太浩大了,所有還是謝謝你的指教囉!!   | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 9 樓
  | 
		
			
				 發表於: 星期一 二月 26, 2007 12:20 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				1 要用在何處?
 
 
當然是配合 exclusive 作大批資料處理的時候,
 
誰還跟你 tableupdate 呀,當然是趕快作一作趕快結束.
 
與使用者互動時才會用5,
 
不過習慣上是查詢時用1,編修時改為5,存檔完成回到查詢時又改回1.
 
(對 sql cursor資料,則必須從頭到尾都是5)
 
 
nelsonchuang 兄的方式也是整個solution的一部分.
 
目前來說,表單類的處理就是作一個cursor,
 
新增時直接寫入cursor,最後再存檔.
 
資料放棄不存檔時很快,驗證資料也很快(以前我們沿用clipper時代的做法,把新增的記錄編號寫在一個array裡,利用for迴圈+go rec_no驗證,可是資料量大時,go 不見得快),
 
存檔時只針對"正確"的資料存檔,
 
所以不會有多餘的無效記錄.(當然在編修資料時,因為是針對整個table,所以還是會有刪除註記的記錄在裡面) _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 10 樓
  | 
		
			
				 發表於: 星期一 二月 26, 2007 12:28 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				純粹查詢或是純粹印表,
 
除非是資料與table內容一致,
 
否則會先組合成cursor,
 
這樣比較方便.
 
 
不管是直接use,或是作成臨時table或cursor,
 
因為沒有編修的需要,
 
所以實際上是預設值1 (sql cursor 先天上必須為5或為預設值) _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		藍薰
 
 
  註冊時間: 2004-01-15 文章: 65
 
  第 11 樓
  | 
		
			
				 發表於: 星期一 二月 26, 2007 4:15 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | syntech 寫到: | 	 		  純粹查詢或是純粹印表,
 
除非是資料與table內容一致,
 
否則會先組合成cursor,
 
這樣比較方便.
 
 
不管是直接use,或是作成臨時table或cursor,
 
因為沒有編修的需要,
 
所以實際上是預設值1 (sql cursor 先天上必須為5或為預設值) | 	  
 
 
syntech老大我可不可再跟你確認一點就是
 
buffermode=2 時下完tableupdate後,是不是要移動記錄才算 unlock,還是只要下tableupdate後就算 unlock了(即使儲存完後記錄仍留在原來的異動的記錄上)
 
阿里阿多...   | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 12 樓
  | 
		
			
				 發表於: 星期一 二月 26, 2007 4:45 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				自己試看看吧.
 
 
我是一定不用 2,4的,
 
所以不要問我.  XD _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		nelsonchuang
 
 
  註冊時間: 2003-09-04 文章: 564 來自: 臺灣
  第 13 樓
  | 
		
			
				 發表於: 星期一 二月 26, 2007 7:26 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | 藍薰 寫到: | 	 		   	  | nelsonchuang 寫到: | 	 		  沒有對或錯的問題,只有好不好用的問題.
 
如果你程式跑得好,你就不會來這邊丟問題,換句話說,這種設定並不適用( 我在講廢話)
 
你這個案例,我以前就遇過,主要的原因來自於原先的設計者一直以為只要用了buffermode,就可以掌控一切,所以表格直接讓使用者改,結果就是存一個檔要花5~10分鐘,結果還不見得ok,使用者只差沒有變成訐譙龍出來唱歌跳舞,天啊~
 
這就是為什麼我會先問你的原因.
 
要解決這個問題,最快的方式(我的方式),就是把資料抄到暫存表格去,讓使用者改,改完之後再抄回去.一切都解決....重要的是,使用者高興怎麼改就怎麼改,只要不存檔,你根本不需理會他們改了什麼..... | 	  
 
 
nelsonchuang老大或許這是你吃過buffermode虧的經驗談,但我總覺得既然buffermode有5種模式可用,應該有其可取之處,只是不知道竅門而已,因為照你的寫法那我的資料庫不下上百個(有3大系統)那樣工程有點太浩大了,所有還是謝謝你的指教囉!!   | 	  
 
作暫存檔也沒那麼難
 
事實上很簡單(當然要改其它配合的程式碼就有點辛苦)
 
寫一個公用程式把表格的結構抄入,再依其結構展一個表格出來,就搞定啦,
 
其它的...那就像你說的,工程浩大,可改就改,不可改,就忍下去吧~只是怕你等不到那時候. _________________ 大家好,請多指教 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		藍薰
 
 
  註冊時間: 2004-01-15 文章: 65
 
  第 14 樓
  | 
		
			
				 發表於: 星期二 二月 27, 2007 8:25 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | syntech 寫到: | 	 		  自己試看看吧.
 
 
我是一定不用 2,4的,
 
所以不要問我.  XD | 	  
 
 
那我不得不說到底是你家的使用者都教育的很好呢
 
還是都不會有編輯到同一筆的狀況(因為你都用5)
 
不過還是謝謝你囉   | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		藍薰
 
 
  註冊時間: 2004-01-15 文章: 65
 
  第 15 樓
  | 
		
			
				 發表於: 星期二 二月 27, 2007 8:29 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				想必老大你也是艱苦過來的
 
謝謝你的賜教..   | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |