我是数据库新手。我正在创建一个Access数据库来跟踪我们公司的库存动态。我有两张桌子。一个是当前的库存,另一个是生产活动带来的消费。每次制作后立即进行更新。
在进行更新之前,我想验证库存状态和消耗表中是否使用了相同的单位。我尝试做这样的事情:
Private Sub Command4_Click()
CurrentDb.Execute "SELECT o.Unit, s.Material_Unit" & _
"CASE WHEN o.Unite = s.Material_Unit" & _
"THEN UPDATE tbl_Current_Stock As o INNER JOIN bl_Temp_Raw_Material_Consumption AS s ON o.Raw_Material = s.[Ingredient/Packaging material] Set o.Stock_Level = o.Stock_Level - s.Consumption" & _
" Print'Congratulations! You have successfully updated inventory balance!'" & _
"ElSE PRINT ' Units of source data and targeted data are not matched!'" & _
"Exit Sub" & _
"End" & _
"FROM tbl_Current_Stock As o, bl_Temp_Raw_Material_Consumption AS s"
END sub
但似乎存在一些错误。请帮我解释这些代码。
感谢。
答案 0 :(得分:1)
你的代码完全错了。您无法使用CASE
来执行哪个语句,UPDATE
或PRINT
(PRINT
在MS Access中无效。
你需要使用:
SQL查询中的 IF
语句 - 将o.Unite
和s.Material_Unit
声明为变量并进行比较,如果匹配则执行更新。
IF @unite = @materialunite
BEGIN
[Your Update Statement]
END
另一种方式:
声明VB变量,为它们分配o.Unite
和s.Material_Unit
值,并在VB中编写IF
- ELSE
语句并执行SQL查询。