2012-07-14 57 views
1

我已經繼承了一個MS數據庫,從此數據庫也鏈接到其他程序,所以我不想更改數據庫表本身。 我使用的是Visual Basic 2010, 我需要做的是在這個表格上有一系列的過濾器,然後用戶輸入一個額外的過濾器。Where子句別名Visual Basic&SQL

例如他們輸入「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

兩件事情:

  1. 你絕對可以有括號 「[..]」 在WHERE子句中,他們只需要在正確的地方(就像其他地方),並

  2. 不能在變量參數引用使用括號,這意味着,不像列,你不能有兵衛特殊字符r名稱,如「@ 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 

當然,你也將有改變的參數/變量名,無論他們的聲明,並通過了如果你。發佈這樣做的代碼,我可以告訴你如何改變它(現在可能很明顯)。

+0

謝謝,即時通訊仍然有點不確定,我可以做這個聲明然後,我不能改變數據庫列名稱,因爲他們鏈接到其他程序。所以我堅持與MM-Across ..我需要什麼代碼來改變這個在SQL方面說MM_Across,因爲別名似乎沒有工作,因爲我得到的錯誤「由新的查詢返回的Schema不同於基本查詢。」此刻我正在考慮創建一個sql語句來將標題改爲新的別名。然後從那裏做第二個sql語句。但我不確定這是否正確。預先感謝你 – NaZReD 2012-07-15 17:55:27

+0

不,我沒有*說*你不得不改變***專欄名稱。只要您將括號放在它們周圍,它們就可以有特殊字符。這是你的**參數**和/或**變量**名稱,你必須改變(我不知道哪些是你的片段)。 – RBarryYoung 2012-07-15 18:00:09