VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

唉!BufferMode 為何我搞不懂你呢??
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
藍薰



註冊時間: 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,這樣的作法對嗎???? Question
回頂端
檢視會員個人資料 發送私人訊息
nelsonchuang



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 2 樓

發表發表於: 星期日 二月 25, 2007 4:07 pm    文章主題: 引言回覆

我不曉得你是不是直接開放表格讓使用者修改?
如果是,建議你快點改變作法,不改就真的會一直發生同樣的事情

_________________
大家好,請多指教
回頂端
檢視會員個人資料 發送私人訊息
藍薰



註冊時間: 2004-01-15
文章: 65


第 3 樓

發表發表於: 星期日 二月 25, 2007 5:19 pm    文章主題: 引言回覆

nelsonchuang 寫到:
我不曉得你是不是直接開放表格讓使用者修改?
如果是,建議你快點改變作法,不改就真的會一直發生同樣的事情


不好意思我不懂你的意思
我舉的那2個例子的BufferMode都設錯了嗎
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: 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. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
藍薰



註冊時間: 2004-01-15
文章: 65


第 5 樓

發表發表於: 星期日 二月 25, 2007 6:43 pm    文章主題: 引言回覆

承 syntech 老大所說的,你都用1,5兩種
但是我印像中1的用法是不需下tableupdate就會馬上儲存的嗎?
那這樣不就讓使用都沒有還原的機會
因為我會用到1的情況都是在存在各使用者硬碟下的暫存檔
比如說列印的時候將資料放到暫存檔
那5的情況都是用到純瀏覽的情況下
回頂端
檢視會員個人資料 發送私人訊息
nelsonchuang



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 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大系統)那樣工程有點太浩大了,所有還是謝謝你的指教囉!! Rolling Eyes
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: 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. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 10 樓

發表發表於: 星期一 二月 26, 2007 12:28 am    文章主題: 引言回覆

純粹查詢或是純粹印表,
除非是資料與table內容一致,
否則會先組合成cursor,
這樣比較方便.

不管是直接use,或是作成臨時table或cursor,
因為沒有編修的需要,
所以實際上是預設值1 (sql cursor 先天上必須為5或為預設值)

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
藍薰



註冊時間: 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了(即使儲存完後記錄仍留在原來的異動的記錄上)
阿里阿多... Embarassed
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 12 樓

發表發表於: 星期一 二月 26, 2007 4:45 pm    文章主題: 引言回覆

自己試看看吧.

我是一定不用 2,4的,
所以不要問我. XD

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
nelsonchuang



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 13 樓

發表發表於: 星期一 二月 26, 2007 7:26 pm    文章主題: 引言回覆

藍薰 寫到:
nelsonchuang 寫到:
沒有對或錯的問題,只有好不好用的問題.
如果你程式跑得好,你就不會來這邊丟問題,換句話說,這種設定並不適用( 我在講廢話)
你這個案例,我以前就遇過,主要的原因來自於原先的設計者一直以為只要用了buffermode,就可以掌控一切,所以表格直接讓使用者改,結果就是存一個檔要花5~10分鐘,結果還不見得ok,使用者只差沒有變成訐譙龍出來唱歌跳舞,天啊~
這就是為什麼我會先問你的原因.
要解決這個問題,最快的方式(我的方式),就是把資料抄到暫存表格去,讓使用者改,改完之後再抄回去.一切都解決....重要的是,使用者高興怎麼改就怎麼改,只要不存檔,你根本不需理會他們改了什麼.....


nelsonchuang老大或許這是你吃過buffermode虧的經驗談,但我總覺得既然buffermode有5種模式可用,應該有其可取之處,只是不知道竅門而已,因為照你的寫法那我的資料庫不下上百個(有3大系統)那樣工程有點太浩大了,所有還是謝謝你的指教囉!! Rolling Eyes

作暫存檔也沒那麼難
事實上很簡單(當然要改其它配合的程式碼就有點辛苦)
寫一個公用程式把表格的結構抄入,再依其結構展一個表格出來,就搞定啦,
其它的...那就像你說的,工程浩大,可改就改,不可改,就忍下去吧~只是怕你等不到那時候.

_________________
大家好,請多指教
回頂端
檢視會員個人資料 發送私人訊息
藍薰



註冊時間: 2004-01-15
文章: 65


第 14 樓

發表發表於: 星期二 二月 27, 2007 8:25 am    文章主題: 引言回覆

syntech 寫到:
自己試看看吧.

我是一定不用 2,4的,
所以不要問我. XD


那我不得不說到底是你家的使用者都教育的很好呢
還是都不會有編輯到同一筆的狀況(因為你都用5)
不過還是謝謝你囉 Rolling Eyes
回頂端
檢視會員個人資料 發送私人訊息
藍薰



註冊時間: 2004-01-15
文章: 65


第 15 樓

發表發表於: 星期二 二月 27, 2007 8:29 am    文章主題: 引言回覆

想必老大你也是艱苦過來的
謝謝你的賜教.. Laughing
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作