在访问2013中使用SQL语句进行条件更新表

时间:2016-10-02 16:14:49

标签: sql ms-access case

我是数据库新手。我正在创建一个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

但似乎存在一些错误。请帮我解释这些代码。

感谢。

1 个答案:

答案 0 :(得分:1)

你的代码完全错了。您无法使用CASE来执行哪个语句,UPDATEPRINTPRINT在MS Access中无效。

你需要使用:

SQL查询中的

IF语句 - 将o.Unites.Material_Unit声明为变量并进行比较,如果匹配则执行更新。

IF @unite = @materialunite 
BEGIN
     [Your Update Statement]
END

另一种方式: 声明VB变量,为它们分配o.Unites.Material_Unit值,并在VB中编写IF - ELSE语句并执行SQL查询。