Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

返回列表 發(fā)新帖
查看: 3469|回復(fù): 7
打印 上一主題 下一主題

[Access本身] 請(qǐng)教如何處理進(jìn)銷存中的并發(fā)問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2016-7-6 18:22:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 lshstruc 于 2016-7-7 09:28 編輯

進(jìn)銷存,多人同時(shí)操作軟件同時(shí)出庫(kù),如何解決:

1.當(dāng)前發(fā)料人查詢得到的某物資編碼的當(dāng)前庫(kù)存在發(fā)料過(guò)程中被其他發(fā)料人更新,實(shí)際最新庫(kù)存已不足,但當(dāng)前發(fā)料人無(wú)法得到通知。

用鎖是解決不了問(wèn)題的,因?yàn)槲沂窍炔樵儙?kù)存,再根據(jù)庫(kù)存批次生成出庫(kù)單明細(xì),幾十條明細(xì)全部生成完畢后,點(diǎn)擊保存后才保存出庫(kù)單,更新庫(kù)存。
用鎖只能解決某一條明細(xì)生成過(guò)程中,該明細(xì)對(duì)應(yīng)的物資編碼的庫(kù)存信息獨(dú)占,一旦該品種發(fā)放完畢,該鎖就會(huì)解除,而此時(shí)出庫(kù)單還沒(méi)有保存,實(shí)際庫(kù)存還沒(méi)有得到更新,其他人查詢到的還是原始庫(kù)存。

比方說(shuō):甲和乙同時(shí)發(fā)料,查詢到物資A庫(kù)存10,甲出庫(kù)10,未保存,乙也出庫(kù)10,先保存了,實(shí)際庫(kù)存為0,甲不知道。

我目前的辦法是:出庫(kù)單保存時(shí),本地事務(wù)處理,對(duì)出庫(kù)單的明細(xì)項(xiàng)目逐條驗(yàn)證庫(kù)存,只要有一條項(xiàng)目的庫(kù)存被更新,導(dǎo)致庫(kù)存不足時(shí),事務(wù)回滾并提示被更新的項(xiàng)目。

但是可能存在的情況是,在逐條驗(yàn)證的過(guò)程中(條目較多的情況下),已驗(yàn)證過(guò)的庫(kù)存被其他人更新,雖然這種幾率比較小。
因此需要對(duì)事務(wù)隊(duì)列,一次只能有一個(gè)人執(zhí)行驗(yàn)證和保存的過(guò)程,其他人都要等待,只能服務(wù)器隔離事務(wù)處理?

有沒(méi)有更好的辦法?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
 樓主| 發(fā)表于 2016-7-7 09:29:09 | 只看該作者
沒(méi)人回答
是不是我沒(méi)把問(wèn)題說(shuō)清楚
3#
發(fā)表于 2016-7-7 12:27:46 | 只看該作者
不知用的什么數(shù)據(jù)庫(kù)

可以在保存時(shí)先鎖住庫(kù)存表,然后查詢庫(kù)存,更新,解鎖.速度很快,應(yīng)該不會(huì)影響其他用戶
4#
發(fā)表于 2016-7-7 12:29:26 | 只看該作者
你對(duì)鎖挺有體會(huì)的,幫我看看這個(gè)
http://ctxi.cn/thread-121922-1-1.html
5#
發(fā)表于 2016-7-7 18:28:50 | 只看該作者
首先,如果是ACCESS數(shù)據(jù)庫(kù)來(lái)說(shuō),本身是文件式數(shù)據(jù)庫(kù),所以數(shù)據(jù)庫(kù)自身,是沒(méi)法解決這問(wèn)題的,
所以要用到代碼,一般用的是ADO事務(wù),這可以,但從來(lái)不建議使用,因?yàn)槌鲥e(cuò)后,麻煩就一大堆,

如果MSSQL,MYSQL這類的是數(shù)據(jù)服務(wù),本身有事務(wù)隊(duì)列進(jìn)行處理,只要加上事務(wù)鎖,就能解決這類問(wèn)題

所以要解決的話,就不要用ACCESS,

6#
 樓主| 發(fā)表于 2016-7-10 09:11:18 | 只看該作者
本帖最后由 lshstruc 于 2016-7-10 09:41 編輯

vs2012+mssql2012,
現(xiàn)在的辦法就是保存前逐項(xiàng)檢驗(yàn),并且調(diào)用服務(wù)器事務(wù)才能保存,一個(gè)人保存時(shí),其他人排隊(duì),一旦前面保存的人將庫(kù)存消耗完畢,后面的人將無(wú)法保存成功。
(因?yàn)槲业某鰩?kù)單里的出庫(kù)明細(xì)是先逐項(xiàng)生成,后集中一次保存的,有點(diǎn)像本論壇里面的主子窗體保存,在生成到保存這段時(shí)間里,是不可能鎖定某一個(gè)表的)
我解決這個(gè)問(wèn)題的思路是借鑒了淘寶網(wǎng)秒殺時(shí)高并發(fā)出庫(kù)的解決辦法,想象一下,大量用戶秒殺同一寶貝時(shí),如果不解決并發(fā)問(wèn)題,淘寶就虧死了,庫(kù)存就會(huì)變成負(fù)數(shù)。

7#
 樓主| 發(fā)表于 2016-7-10 10:10:07 | 只看該作者
風(fēng)中漫步 發(fā)表于 2016-7-7 12:29
你對(duì)鎖挺有體會(huì)的,幫我看看這個(gè)
http://ctxi.cn/thread-121922-1-1.html

http://bbs.csdn.net/topics/350143041
8#
發(fā)表于 2016-7-10 14:40:56 | 只看該作者
lshstruc 發(fā)表于 2016-7-10 09:11
vs2012+mssql2012,
現(xiàn)在的辦法就是保存前逐項(xiàng)檢驗(yàn),并且調(diào)用服務(wù)器事務(wù)才能保存,一個(gè)人保存時(shí),其他人排 ...

可能門(mén)派不同,我不知道我們說(shuō)的是否是一個(gè)事情

只要都達(dá)到目的就行了
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2024-10-23 10:21 , Processed in 0.204570 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表