0

我在编程方面有点新手/新手,所以请原谅我的天真。在 MS Access 2013 中,我有两个表:表 1 和表 2。我需要一种方法来比较 [表 1].[字段 6] 中输入的值与 [表 2].[字段 2] 中的值,然后当它找到匹配项时,在 [Table 2].[Field 3] 中获取相应的行值,并将其用于 [Table 1].[Field 13] 中的表达式中。

我曾想过使用“If”语句,但两个正在比较的表中有 10 个潜在值,因此表达式会变大并且需要很长时间才能计算出来。特别是一旦表 1 开始获得数百/数千条记录。

有人可以告诉我最简单/最干净的方法吗?

编辑 - 每个请求添加更多细节。

我们出售整车、有轨电车、手提袋等商品。因此,当我们签订合同时,我们将签订 2 辆卡车、3 辆轨道车、10 个集装箱等。这些运输方式中的每一种都有不同的重量,并且定价/销售也不同(美元/磅、美元/公吨等.) 取决于运输方式。这个想法是,当输入合同时,它会查看在 [table 1].[field 6] 中输入的运输方式,将其与主重量表(即表 2)进行比较,以获得数量运输方式是磅、吨等(让我们将此变量称为“x”),因此我可以使用该数字(以及表 1 中其他字段的数量和价格)在新字段中生成总收入数字在表 1 中。 = "x" [数量] [价格]。

例如,假设我们卖了 3 辆卡车。当输入卡车作为运输方式时,它会查找卡车的体积(即 46,000 磅),然后在表达式中使用该数字。46,000 x 3 卡车 x 0.39 美元/磅 = 53,820 美元。

我可以创建外壳,并且可以在收入字段中创建表达式。我只是无法弄清楚如何将变量“x”(基于比较表的权重)放入等式 =“x” [volume] [price] 而无需简单地执行“If”语句并包括所有 10表达方式中的运输方式。我认为有一种方法可以使用表或查询来带回“x”而不是表达式中的 10 个不同的逻辑测试。

4

1 回答 1

0

你可以试试这个 SQL 语句:

UPDATE [Table 1] INNER JOIN [Table 2] ON [Table 1].[Field 6]=[Table 2].[Field 2] SET [Table 1].[Field 13] = [Table 2].[Field 3];

[Table 2].[Field 3] * [Table 1].[Other field]如果您希望乘以数量和价格,您可以添加或添加任意数量的字段。

您还可以添加WHERE [Table 1].[Field key] = "current_record_key"以确保仅更新当前条目。如果您不这样做,它将更新整个表 1,如果权重随时间变化,这可能是一个问题。另一种选择 if WHERE [Table 1].[Field 13] IS NULL,这样它只会更新总收入为空的字段。

于 2013-03-12T16:36:33.347 回答