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

多人版如何控制表單能鍵有人使用中其他人不能使用,請教各位先進
前往頁面 上一頁  1, 2, 3
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
sken



註冊時間: 2004-02-17
文章: 66


第 31 樓

發表發表於: 星期四 九月 26, 2019 1:49 pm    文章主題: 引言回覆

CPS0204 寫到:
有個解決方法就是,使用DBF 的索引檔,把主鍵設為單號,就可解ˋ決99.9%


但syntech兄 說可以100.0%ㄟ(還是條件不同?)
回頂端
檢視會員個人資料 發送私人訊息
ezpos



註冊時間: 2011-04-20
文章: 306


第 32 樓

發表發表於: 星期四 九月 26, 2019 2:51 pm    文章主題: 引言回覆

CPS0204 寫到:
小弟就是使用者按下存檔後,立刻取得新單號,並存檔更新,但還是會發生單號重複!
==============================
1.若是你是使用dbf (FILE-SERVER)的方式就無解,即使是NOVELL.同時50人按紐也會搶號!
有個解決方法就是,使用DBF 的索引檔,把主鍵設為單號,就可解ˋ決99.9%
剩餘0.1% 還是無解,因為DBF 模式,是將SERVER COPY 至本機來暫存, 在RAM,快取記億體中都會造成誤判,我已試過好幾年,一年當中約會有 1-2筆重覆,不管如何鎖定,解鎖都會搶號!

2.若是SQL SERVER就簡單多了,在 SQL SERVER上,將單號設為PK鍵即可,!
寫入時若 SQLEXEC() 回傳 -1,就是搶號了,再去執行跳號的程序即可!


我使用第二個方式 ,專門的table管理流水號
基本上,沒聽說過有重複的現象

_________________
ezPos收銀機 簡單好用低成本 http://www.ezpos.info
全新美觀的POS收銀機.POS軟硬體耗材.
軟體客制化.網站規劃....能賺錢的都可以找我

http://www.twelife.com 台灣生活網
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



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

第 33 樓

發表發表於: 星期四 九月 26, 2019 4:04 pm    文章主題: 引言回覆

sken 寫到:
CPS0204 寫到:
有個解決方法就是,使用DBF 的索引檔,把主鍵設為單號,就可解ˋ決99.9%


但syntech兄 說可以100.0%ㄟ(還是條件不同?)


因為有一段你沒注意到,少那一段就變成普通作法一樣了

Twisted Evil Twisted Evil Twisted Evil Twisted Evil



做成 pk 其實就除了硬體問題外,可以說是 99.9999......... % 了
那就四捨五入吧

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

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



註冊時間: 2014-08-24
文章: 217


第 34 樓

發表發表於: 星期五 九月 27, 2019 9:43 am    文章主題: 引言回覆

相信我,使用dbf 的TABLE (非SQL SERVER) 的 rlock(),flock()在多人版本時,一定會有幾筆會重號,由其多人在輸單時!
一定要相信我,使用DBF一定會0.1%機率會相同流水號!
例:存檔時先 FLOCK() ,幾秒, 再SELECT * FROM ...在抓一次,再判斷最後一號+1,再存檔,還是會有遺漏!個人覺得是WINDOW版的FOXPRO 沒考率到有記億體的快取,硬碟的快取,還有網卡的快取,及 SERVER 上的I/O快取.....都會造成不同的誤判(不符合人期待)的誤判!所以MS 後來才一直推廣,SERVER請上移至 SQL SERVER,不要再用FILE-SERVER

後來改成SQL SERVER(PK KEY) 後,就沒有搶號問題了!
-
另外一個思考模式:將流水好由A00001->A00006 改為 A+(登錄者代號)+流水號
其中限制:不準兩個相同帳號同時登錄,這很簡單控制
新單號變為 AU001-00001 到 AXXXX-99999 (當中的U001為使用者註冊在本ERP的唯一流水號,不可重覆,長度可自由設定),這樣即使最後5碼相同,但完整碼,是不同的,也可避開錯誤點!
這樣當作銷貨單頭的流水號,應可保證(完整碼)是唯一的!

例:有機會存檔到 AU001-00008,與 AU234-00008 在資料庫,看起來很奇怪,但不會影想唯一性
回頂端
檢視會員個人資料 發送私人訊息
sken



註冊時間: 2004-02-17
文章: 66


第 35 樓

發表發表於: 星期五 九月 27, 2019 5:08 pm    文章主題: 引言回覆

CPS0204 寫到:
相信我,使用dbf 的TABLE (非SQL SERVER) 的 rlock(),flock()在多人版本時,一定會有幾筆會重號,由其多人在輸單時!
一定要相信我,使用DBF一定會0.1%機率會相同流水號!
[/color]


我相信你~
我一定相信你!

只是我使用file-server,20年了~ 還有機會改SQL server嗎?
前輩留給我時,告訴我資料庫維護是必要的,單號本來就會重複,所以才需要我們ㄚ!ㄎ ㄎ
回頂端
檢視會員個人資料 發送私人訊息
CPS0204



註冊時間: 2014-08-24
文章: 217


第 36 樓

發表發表於: 星期六 九月 28, 2019 8:38 am    文章主題: 引言回覆

自刪除
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 37 樓

發表發表於: 星期六 九月 28, 2019 10:15 am    文章主題: 引言回覆

sken 寫到:

只是我使用file-server,20年了~ 還有機會改SQL server嗎?
前輩留給我時,告訴我資料庫維護是必要的,單號本來就會重複,所以才需要我們ㄚ!ㄎ ㄎ


我支持你前輩.

系統做到沒出問題,
連年度保護費都會收不到

Orz

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

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



註冊時間: 2008-10-13
文章: 449
來自: 台南市

第 38 樓

發表發表於: 星期五 十月 04, 2019 11:35 am    文章主題: 引言回覆

garfield 寫到:
引言回覆:

如果我寫了一個註記, 剛好我又不正常離開, 註記沒有被清除, 那後面的人要怎麼辦?

應該在寫入註記時順便寫入有效期限, 只要超過有效期限的是可以被清除的.


果然薑還是老的辣~~

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
goodnight



註冊時間: 2008-10-13
文章: 449
來自: 台南市

第 39 樓

發表發表於: 星期五 十月 04, 2019 11:43 am    文章主題: 引言回覆

至於單據號碼的問題, 我好像有看過這種做法, 不知道好不好用
新增時產生一個單號 -> 寫入時確定現有的單號有沒有存在
Y: 已存在, 表示已經有人寫入了, 重新產生單號, 並出現訊息告知 user
N: 不存在, 直接寫入並結案

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
syntech



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

第 40 樓

發表發表於: 星期一 十月 07, 2019 10:01 am    文章主題: 引言回覆

目前我是這樣搞的.

1. 資料 table: A, 資料TABLE 結構相同的暫存檔 A', 用來驗證唯一性的TABLE B (BUFFER MODE = 0,直接寫入)

作法:
1.新增時,由A 及B 找出最大的號碼,例如:01,把01+1,例如02寫入B,
2.因為B 中記錄不可重複,所以網路上其他工作站同時新增02時會收到錯誤,再把02+1再寫入B,
以此類推,所有工作站都不會重複
3.新增時先把資料通通打到A',最後再一次寫回A
4.取消或是存檔後,把B中的記錄清除.
5.萬一遇到斷電,02當然就會卡在B中,請使用者執行"重整"(為了隱藏真實作業的偽功能),在裡面做清除B記錄的動作


當然你可以變化一下,
例如B裡加上工作站IP,寫入時間,......輔助你控制B,
但原理不會相差太多

如果變成SQL版,那就是B中的單號或是其他你想控制的欄位做成PRIMARY KEY,
一樣,當網路上其他工作站要插入同一個單號,
就會跳出錯誤,就給他+1再存一次,直到存進去.
最後也是清除掉B中的記錄


----
註1: A' 與A 的問題,可以自己想一想.

註2: DBF 在後來的版本也可以建PRIMARY KEY

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

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



註冊時間: 2014-08-24
文章: 217


第 41 樓

發表發表於: 星期三 十月 09, 2019 10:33 am    文章主題: 引言回覆

1.若是dbf 有設為INDEX 的PK KEY,還是會重覆
因為:區域網路上的遠端FILE SERVER,有CACHE RAM,你的PC上也有CACHE RAM (硬碟+RAM),兩者的INDEX 現有狀況的同步化不清楚(因是VFOX後台在做同步的,每幾秒或每幾毫秒,同步一次不會知道),既然無法100%保證CACHE 同步,所以還是會有小機率造成存檔刷新不同步,兩個人同時搶到同樣的流水號!
即使使用RLOCK,FLOCK 也是一樣,本人每年都要處理1-2筆的重號問題!苦不堪言
2.解決方法: 改由 SQL-SERVER 的PK KEY!
回頂端
檢視會員個人資料 發送私人訊息
ezpos



註冊時間: 2011-04-20
文章: 306


第 42 樓

發表發表於: 星期一 十月 14, 2019 4:30 am    文章主題: 引言回覆

mysql流水號可以參考這個範例

https://www.jianshu.com/p/d7570564f104


sCode 改成PK...

_________________
ezPos收銀機 簡單好用低成本 http://www.ezpos.info
全新美觀的POS收銀機.POS軟硬體耗材.
軟體客制化.網站規劃....能賺錢的都可以找我

http://www.twelife.com 台灣生活網
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



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

第 43 樓

發表發表於: 星期二 十月 15, 2019 4:26 pm    文章主題: 引言回覆

CPS0204 寫到:
1.若是dbf 有設為INDEX 的PK KEY,還是會重覆
因為:區域網路上的遠端FILE SERVER,有CACHE RAM,你的PC上也有CACHE RAM (硬碟+RAM),兩者的INDEX 現有狀況的同步化不清楚(因是VFOX後台在做同步的,每幾秒或每幾毫秒,同步一次不會知道),既然無法100%保證CACHE 同步,所以還是會有小機率造成存檔刷新不同步,兩個人同時搶到同樣的流水號!
即使使用RLOCK,FLOCK 也是一樣,本人每年都要處理1-2筆的重號問題!苦不堪言
2.解決方法: 改由 SQL-SERVER 的PK KEY!


其他的部分,
也無法強求軟體工程師都要能處理.

也不見得都無法處理,只是SERVER檔案讀寫效能會因此低落

做軟體工程師能做的就好了.
不然用VFP做一個SERVICE取得唯一單號. Twisted Evil Twisted Evil Twisted Evil

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

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 上一頁  1, 2, 3
3頁(共3頁)

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


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