我有一个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))
")
正常工作并返回正确的国家/地区
答案 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]))