我继承了一个MS数据库,从中工作,这个数据库也链接到其他程序,所以我不想更改数据库表本身。 我正在使用Visual Basic 2010, 我需要做的是在此表上有一系列过滤器,然后由用户输入一个额外的过滤器。
e.g。他们输入'50'和范围'5'我需要使用'45到55'的范围搜索数据集 到目前为止,这是我的数据集代码:
SELECT [CUTTER NO]
,CUTTER_ID
,[SIZE-Inches]
,[MM-Across]
,[MM-Round]
,TYPE
,[LEADING EDGE]
,[CUTTER TYPE]
,ACROSS
,ROUND
,[WIDTH PAPERmm]
,[GAPS ACROSSmm]
,[GAPS ROUNDmm]
,[Serial Number]
,[T G]
,Repeat
,[Repeat MM]
,[L&G]
,Notes
FROM [Cutter List]
WHERE (TYPE <> 'DISCONTINUED')
AND (TYPE <> 'SPEC')
AND (CUTTER_ID <> NULL)
AND ([CUTTER TYPE] = 'MP')
AND (TYPE <> 'BUTT')
ORDER BY CUTTER_ID, [MM-Across]
我需要输入此SQL的是:
WHERE [MM-Across] LIKE @[MM-Across] and [MM-Round] LIKE @[MM-Round]
我从网上看到的内容是错误的,因为我不能在[。]中使用[]。
我甚至尝试过:
SELECT [MM-Across] AS mmacross
FROM [Cutter List]
WHERE ('mmacross' LIKE '@mmacross')
这是接受但我得到一个不同的错误出现
“新查询返回的架构与基本查询不同。”
我做错了什么?我不明白最后一个错误或如何避免这种情况。
答案 0 :(得分:0)
两件事:
你肯定在WHERE子句中有括号“[..]”,它们只需要在正确的位置(就像其他地方一样),并且
您无法使用 变量 或 参数 引用中的括号,这意味着,与列不同,您的名称中不能包含特殊字符,例如“@ MM-Across”中的“ - ”,因此只需将参数名称更改为“@MM_Across”。
请注意列名称没问题,您必须更改参数和/或变量名称(我无法分辨哪个名称)这些来自你的片段。)
所以不要这样:
WHERE [MM-Across] LIKE @[MM-Across] and [MM-Round] LIKE @[MM-Round]
试试这个:
WHERE [MM-Across] LIKE @MM_Across and [MM-Round] LIKE @MM_Round
当然,您还必须在声明和传入的任何位置更改参数/变量名称。如果您发布执行此操作的代码,我也可以向您展示如何更改它(通过它可能是显而易见的现在)。