SQL插入到MS Access Forms

时间:2018-04-23 00:45:17

标签: sql ms-access

我目前正在制作一个模型Access数据库,其中客户POS通过表单构建在其中。我想要做的是从表格中提取3条信息:咖啡的大小,奶油量和糖量,并将它们放在tempOrder表中供以后使用。问题是我从另一张桌子上拿了咖啡的ID。如果这是不可能的,我想我必须以某种方式将值硬编码到表单中,而不是引用另一个表。这是我到目前为止获得咖啡ID并将其放入表中的原因:

INSERT INTO tempOrder ( ProductID )
SELECT ProductID 
FROM Product
WHERE ProductName =  FORMS!HotCoffee!hotCoffeeChoice'

-edit -

从本质上讲,我尝试做的就是在点击按钮时从一种形式中拉出用户想要的咖啡的大小,奶油的量和糖的量,然后将它们放入包含当前订单中所有项目的表。奶油和糖在文本框中,而咖啡尺寸在列表框中,其内容来自查询,查找单独的产品表中具有描述'咖啡的所有项目。 (小号中号大号)。当我从表单中提取此信息时,它只是明文中的大小。要将其拉回并转换回ProductID,我调用上面的代码。问题是我希望将奶油和糖放在与ProductID相同的行中,并且不知道如何解决这个问题。

FORM有productName,cream和sugar随时可用

orderTable需要productID,cream和sugar

我将productName转换为productID并使用上面的代码将其插入orderTable,这使得目前无法获取奶油和糖并将它们放在同一记录中。

1 个答案:

答案 0 :(得分:0)

您可以使用INSERT语句插入多个值,方法是在查询的INSERT INTO子句中指定目标列,并确保每个目标列在{返回的数据中都有对应的列{1}}陈述:

SELECT

但是,使用产品名称作为条件来选择要从INSERT INTO tempOrder ( ProductID, Cream, Sugar ) SELECT ProductID, Forms!HotCoffee!Cream, Forms!HotCoffee!Sugar FROM Product WHERE ProductName = Forms!HotCoffee!hotCoffeeChoice 表中插入的记录对我来说似乎不对。您不需要Products表中的任何映射;您只想将记录插入Products表。

以这种方式思考:如果您有两个同名产品,会发生什么?您的查询将返回两个与该名称匹配的记录,并将两个相应的记录插入tempOrder;我假设这不是你想要的。

相反,我建议关注表单中的信息,并将其直接插入到tempOrder表中。

您应该能够将列表框的值绑定到tempOrder列,同时显示ProductID列:

  1. 设置列表框的ProductName以返回RecordSource列和ProductID
  2. 将列表框的ProductName设置为ColumnCount
  3. 将列表框的2属性设置为ColumnWidths。这将隐藏第一列并仅显示列表框中的第二列。但是,第一列中的数据仍然可以通过列表框获得,并且可以通过0;属性返回当前选定的列表框项目。
  4. 然后,您可以按如下方式编写查询:

    Value

    参考: