MS Access窗体中的SQL语法

时间:2012-09-21 06:59:07

标签: sql parameters

我有一个SQL语法问题,我一直在努力工作几天。

我创建了一个名为IP Country Form的MS Access 2010表单,我希望将其插入一个名为Country的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的TextBox中,然后我在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

本质上,查询旨在查找IPN在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))
           ")

正常工作并返回正确的国家/地区

1 个答案:

答案 0 :(得分:0)

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

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

IPLocation.IPNE) &lt; " & [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]))