1

我继承了一个 MS 数据库来工作,这个数据库还链接到其他程序,所以我不想更改数据库表本身。我正在使用 Visual Basic 2010,我需要做的是在此表上有一系列过滤器,然后用户输入一个额外的过滤器。

例如,他们输入“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')

它接受但我得到一个不同的错误出现

“新查询返回的架构与基本查询不同。”

我究竟做错了什么?我不明白最后一个错误或如何避免这种情况。

4

1 回答 1

0

两件事情:

  1. 您绝对可以在 WHERE 子句中使用方括号“[..]”,它们只需位于正确的位置(就像其他任何地方一样),并且

  2. 您不能在变量参数引用中使用方括号,这意味着,与列不同,它们的名称中不能有特殊字符,例如“@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

当然,您还必须更改声明和传入的参数/变量名称。如果您发布执行此操作的代码,我也可以向您展示如何更改它(尽管现在可能很明显)。

于 2012-07-14T15:19:43.630 回答