我正在使用SQL Server Express 2016和Excel VBA为一堆不同的Excel文档生成唯一的批号。目前,我正在创建一个新行,然后SQL Server中的脚本递增批号。然后我运行一个select语句来从刚刚创建的行中获取该字段。到目前为止,我没有遇到任何问题,但是,我担心如果excel文件同时被不同用户触发,则一个用户的select查询可能会抓取另一个用户创建的行。这是一个问题吗?如果是这样,我该如何避免呢?
statement = "INSERT INTO LotInfo(RefNum,DateCreated,UserName)VALUES('" & RefNum
& "','" & DateCreated & "','" & user & "')"
conn.Execute statement
Set lot = conn.Execute("SELECT top 1 Lot FROM LotInfo Order By ID desc;")
答案 0 :(得分:1)
我不相信范围标识会起作用。 这些陈述是完全独立的。首先你做插入。结束了。然后你发送选择。虽然我并不是100%熟悉VBA,但我不确定第二个选择是否会知道第一张发票的结果。 我建议你创建一个可以从VBA调用的存储过程。 该过程将执行插入,然后返回批号。