 |
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 文章: 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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
藍薰
註冊時間: 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大系統)那樣工程有點太浩大了,所有還是謝謝你的指教囉!!  |
|
回頂端 |
|
 |
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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
藍薰
註冊時間: 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 文章: 4249 來自: Taipei,Taiwan
第 12 樓
|
發表於: 星期一 二月 26, 2007 4:45 pm 文章主題: |
|
|
自己試看看吧.
我是一定不用 2,4的,
所以不要問我. XD _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
nelsonchuang
註冊時間: 2003-09-04 文章: 563 來自: 臺灣
第 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 文章主題: |
|
|
想必老大你也是艱苦過來的
謝謝你的賜教..  |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|