アジゼデル、
ComboBox hamishe baiangare LookUp ast ke hamanande Table eist ke 2 sotoune Id vaDescriptionrdarad。Agar gharar ast ke meghdare entekhabie ComboBox be StoredProcedure ferestade beshe、pishnahad mikonam az Id e Bind shode be SelectedValue e ComboBoxestefadebeshe。Nvarchar ro be SP ferestadan karedorostinist。
親愛なるサー/マダム、
ComboBoxは常に、IdとDescriberの2つの列しかないテーブルのような情報システムのLookUpの代わりになります。ComboBoxのSelectedValueをStoredProcedureに送信しようとしている場合は、SelectedValueのバインドされた値を整数として送信することをお勧めします。次に、クエリを作成するための多くのオプションがあります。Nvarcharを使用してLookUp値を送信すると、アプリケーションの将来に多くの副作用が発生する可能性があります(比較すると、照合に関して多くの問題があります)。
乾杯
コードを次のように変更します。
USE [QueueDB]
GO
/****** Object: StoredProcedure [dbo].[SP_SelectDriver_ByNameAndField] Script Date: 09/07/2012 17:20:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_SelectDriver_ByNameAndField] (
@Word Nvarchar(100)
, @Field TinyInt
) As Begin
Select *
From Driver
Where Case When @Field = 1
And Column1 Like + N'%' + @Word + '%'
Then 1
When @Field = 2
And Column2 Like + N'%' + @Word + '%'
Then 1
When @Field = 3
And Column3 Like + N'%' + @Word + '%'
Then 1
Else 0
End = 1
;
Return 0;
END
また、別の方法を使用することもできます。
USE [QueueDB]
GO
ALTER PROCEDURE [dbo].[SP_SelectDriver_ByNameAndField] (
@Word Nvarchar(100)
, @Field TinyInt
) As Begin
Declare @Command Nvarchar(Max);
Select @Command = N'
Select *
From Driver
Where '
+ Case When @Field = 1
Then 'Column1'
When @Field = 2
Then 'Column2'
When @Field = 3
Then 'Column3'
Else 'DefaultColumn'
End
+ N' Like + N''%'
+ @Word
+ N'%'''
;
Execute (@Command);
Return 0;
END