1

我有一个 SQL 语法问题,我已经苦苦挣扎了好几天。

我创建了一个名为 MS Access 2010 的表单IP Country Form,我希望将其插入到一个名为CountryCountry 的 TextBox 中,该文本框是从以下查询获得的,该查询查询一个名为的表,该表IPLocation包含根据 IP 编号的国家和字段:

IPNS IPNE CY2(2 letter Country Code) CY3(3 Letter country Code) Country (full Country Name)

表行如下所示:

IPNS     | IPNE     | CY2 | CY3 | COUNTRY
19791872 | 19922943 | TH  | THA | THAILAND

该表单根据 IP 地址计算 IP 编号并将其放置在名为 的文本框中IPNumber,然后我在 SQL 查询中使用该文本框来获取与其对应的国家/地区。

我目前的查询是:

SELECT IPLocation.IPNS, IPLocation.IPNE, IPLocation.CY2, IPLocationCY3, IP.Location.Country 
  FROM IPLocation 
 WHERE (((IPLocation.IPNS)<" & [Forms]![IP Country Form]![IPNumber]) 
   And ((IPLocation.IPNE) > " & [Forms]![IP Country Form]![IPNumber]))

IPNS、IPNE 和 IPNumber 一样是数字

本质上,该查询旨在查找 IPNumber 位于 IPNS 和 IPNE 之间的国家。

任何帮助将非常感激。

我使用的测试查询:

Set rst = dbs.OpenRecordset("
                 SELECT IPLocation.IPNS, IPLocation.IPNE, IPLocation.CY2, IPLocation.CY3,
                        IPLocation.Country 
                   FROM IPLocation 
                  WHERE (((IPLocation.IPNS)>19791871) 
                    AND ((IPLocation.IPNE)<19922944))
           ")

工作正常并返回正确的国家

4

1 回答 1

0

AND在您在代码上使用的查询中,您在子句上反转了比较运算符。

IPLocation.IPNS) > " & [Forms]![IP Country Form]![IPNumber]

IPLocation.IPNE) < " & [Forms]![IP Country Form]![IPNumber]

应该:

SELECT IPLocation.IPNS, IPLocation.IPNE, IPLocation.CY2, IPLocationCY3,
       IP.Location.Country 
  FROM IPLocation 
 WHERE (((IPLocation.IPNS) > " & [Forms]![IP Country Form]![IPNumber]) 
   And ((IPLocation.IPNE) < " & [Forms]![IP Country Form]![IPNumber]))
于 2012-09-21T08:31:30.320 回答