1

私は MS データベースを継承して作業しています。このデータベースは他のプログラムにもリンクしているため、データベース テーブル自体を変更したくありません。私は Visual Basic 2010 を使用しています。私がする必要があるのは、このテーブルに一連のフィルターを設定してから、ユーザーが入力した追加のフィルターを 1 つ用意することです。

たとえば、「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

2つのこと:

  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 に答える