使用两个表中的类似字段在MS VBA中运行IF语句

使用两个表中的类似字段在MS VBA中运行IF语句,vba,ms-access,Vba,Ms Access,我试图根据当前数量的总和设置一个数量值,然后根据另一个表中的数量值减去一个数量值。 我目前的想法是:如果数量a小于或等于数量B,那么从数量B中减去数量a。 我不是SQL和MS VBA方面的专家,所以我想知道如何用两个不同的表生成if语句 Private Sub Command23_Click() If QuantityA <= QuantityB Then QuantityB = QuantityB - QuantityA Else Msg

我试图根据当前数量的总和设置一个数量值,然后根据另一个表中的数量值减去一个数量值。 我目前的想法是:如果数量a小于或等于数量B,那么从数量B中减去数量a。 我不是SQL和MS VBA方面的专家,所以我想知道如何用两个不同的表生成if语句

Private Sub Command23_Click()

    If QuantityA <= QuantityB Then
        QuantityB = QuantityB - QuantityA

    Else
       MsgBox "You can not hire that many" & ToolName & "as there is only" & [DEPARTMENT TOOLS (stocked)].Quantity & "available"

    End If
        MsgBox "Your hire request has been successful"
End Sub
Private子命令23_Click()

如果QuantityA您可以通过打开一个包含查询结果的记录集并比较查询返回的值来实现您的要求。为了将查询限制为适当的数量,您需要传入正在检查的工具的ID

@关于保存计算数据,6月7日是正确的。如果要保存事件日志,或者连接查询的速度成了问题(如果数据库结构正确,则不太可能),则只需保存

例如,
toolId可能存储在文本框控件中
单击函数(工具ID为字符串)
将遥感器作为记录集
'创建包含两个表中数据的记录集
设置rs=CurrentDB.OpenRecordset(“选择A.TOOL\U数量作为TOOL\U数量,”_
&“B.刀具数量作为刀具数量,A.刀具名称作为刀具名称”_
&“从表1中作为一个”_
&“A.TOOL_ID=B.TOOL_ID上作为B的内部联接表2”\u
&“其中A.TOOL_ID=”&TOOL ID&“”)
'比较表中的值

如果是的话![工具数量]我不知道这是否可行。但是我正在考虑一个IF语句,如果ItemID的数量等于或大于1,则从ItemID的数量中减去1,并记录这是关于MS Access中的VBA吗?保存计算数据,尤其是聚合数据通常是一个糟糕的设计。应在需要时输入原始数据并计算聚合数据。但是,要从另一个表中提取数据进行比较,请使用记录集或域聚合函数(DCount、DSum、DLookup等)。@urderboy要回答您的问题,我有一个“所有工具”的表,它使用一个简单的添加记录函数,允许用户插入原始数据。然后,这将显示在报告中。我的“雇用工具”表使用来自“所有工具”表的信息来提供工具ID等信息,该ID位于组合框中,用于显示工具名称等其他信息。由于每个工具都有一个数量编号,所以我希望每次雇佣工具时,它都会向新表中添加一条记录,并从原始表中的数量中减去一条。@BrianTompsett-汤莱恩 是的,对不起,我正在使用MS Access VBA
toolId might be stored in a text box control for example
Function Something_Click(toolId as string)
  Dim rs as Recordset
  ' create a recordset containing data from the two tables
  Set rs = CurrentDB.OpenRecordset("SELECT A.TOOL_QTY AS TOOL_QTY_A, " _
           & " B.TOOL_QTY AS TOOL_QTY_B, A.TOOLNAME AS TOOLNAME" _
           & " FROM TABLE1 AS A  " _
           & " INNER JOIN TABLE2 AS B ON A.TOOL_ID = B.TOOL_ID" _ 
           & " WHERE A.TOOL_ID = '" & toolId & "'")
  ' compare the values in the table
  If rs![TOOL_QTY_A] <= rs![TOOL_QTY_B] Then
    ' your true condition, for example
    ' MsgBox "Success"
  Else
    ' your false condition, for example
    ' MsgBox "Oops, not enough of " & rs![TOOLNAME]
  End If
  ' close the recordset
  rs.close
End Function