如何在Access SQL中使用反余弦(ACOS)

时间:2015-07-29 11:10:51

标签: sql ms-access google-maps-api-3 asp-classic

我在Classic ASP中有一个带有Access数据库的网站。我使用的是Google地图API。现在我想在距离给定地点20公里范围内找到公司(来自数据库)。

我找到了一个公式(hasrsine),但似乎我不能使用ACOS()。我收到这个错误:

  

Microsoft JET数据库引擎错误' 80040e14'   未定义的功能' acos'在表达中。

这是我的sql:

lat = 56.113517
lng = 10.145928
sql = "SELECT companyId, ( 3959 * acos( cos( radians(37) ) * cos( radians(  lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM company HAVING distance < 25 ORDER BY distance"
Set rs = Connect.Execute(sql)

我有搜索和搜索但我无法找到解决方案。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

Access SQL确实没有内置的ACOS()函数。如果您在Access中运行查询,那么您可以在VBA中创建自己的ACOS()函数以在SQL查询中使用,但该选项不适用于来自其他应用程序(如ASP)的Access数据库的SQL查询应用程序)。

因此,在检索可能符合条件的记录后,您需要在ASP中进行精确的距离计算。也就是说,你可以计算出一个40公里乘40公里&#34;广场的经度和经度边界。以目标位置为中心(以排除保证距离太远的记录),然后使用ASP函数计算每个返回记录的实际距离(示例代码here)。