我目前正在制作一个模型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,这使得目前无法获取奶油和糖并将它们放在同一记录中。
答案 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
列:
ProductName
以返回RecordSource
列和ProductID
列ProductName
设置为ColumnCount
2
属性设置为ColumnWidths
。这将隐藏第一列并仅显示列表框中的第二列。但是,第一列中的数据仍然可以通过列表框获得,并且可以通过0;
属性返回当前选定的列表框项目。然后,您可以按如下方式编写查询:
Value
参考: