Sql 在Microsoft Access查询中使用数组
我在Microsoft Access中有一个查询,它用Sql 在Microsoft Access查询中使用数组,sql,vba,ms-access,Sql,Vba,Ms Access,我在Microsoft Access中有一个查询,它用距离和时间更新表(I_postcodes)中的zipcode/postcodes,从base原始zipcode(保存在I_BasePostcode中)到相关zipcode 我的Access仅用于确定距离的查询是: UPDATE I_Postcodes, I_BasePostcode SET I_Postcodes.DistanceFromBase = GetDistance(I_BasePostcode.Postcode,I_Postcode
距离和时间更新表(I_postcodes
)中的zipcode/postcodes,从base
原始zipcode(保存在I_BasePostcode
中)到相关zipcode
我的Access
仅用于确定距离的查询是:
UPDATE I_Postcodes, I_BasePostcode
SET I_Postcodes.DistanceFromBase = GetDistance(I_BasePostcode.Postcode,I_Postcodes.Postcode)
WHERE (I_Postcodes.DistanceFromBase Is Null);
I_BasePostcode
表如下所示:
+----------+
| Postcode |
+----------+
| LS1 3EX |
+----------+
+----------+------------------+--------------+
| Postcode | DistanceFromBase | TimeFromBase |
+----------+------------------+--------------+
| SW13 9EE | 50 | 200 |
| SW13 9EF | 50 | 201 |
| SW13 9EG | 52 | 210 |
+----------+------------------+--------------+
从I_Postcodes
表中提取的内容如下所示:
+----------+
| Postcode |
+----------+
| LS1 3EX |
+----------+
+----------+------------------+--------------+
| Postcode | DistanceFromBase | TimeFromBase |
+----------+------------------+--------------+
| SW13 9EE | 50 | 200 |
| SW13 9EF | 50 | 201 |
| SW13 9EG | 52 | 210 |
+----------+------------------+--------------+
就这个问题而言,GetDistance
函数有点复杂,但它的工作原理与我所希望的一样,并返回一个由两个值组成的数组:距离整数和时间整数。我可以通过拨打以下电话访问这两个站点:
' Distance
GetDistance(Origin, Destination)(0)
' Time
GetDistance(Origin, Destination)(1)
我想更新我的查询,以包括到达目的地所需的时间,但我不确定如何在不调用GetDistance
函数两次的情况下执行此操作?使用静态变量返回GetDistance函数中的数组和以前的参数值。如果参数相同且数组已经有有效值,则从静态变量返回数组,否则计算时间/距离。这是什么样子?“使用静态变量…”-是的,这也是我所设想的。另一种选择是使用记录集更新而不是SQL查询。它看起来没什么特别的,只要记住,如果在声明中使用Static
而不是Dim
,变量在函数调用之间保持当前值,因此,如果参数相同,则不需要重新计算结果。GetDistance
函数是否昂贵,是否经常为相同的值调用该函数?如果是这样的话,也许值得为以前的调用和结果建立一个字典;这不仅可以解决两次调用同一个函数的问题(您将有两个函数调用同一个字典),而且还可能加速对相同的from/to位置的重复调用