阿齐兹德尔,
ComboBox hamishe baiangare LookUp ast ke hamanande Table eist ke 2 sotoune Id va Describer darad。Agar gharar ast ke meghdare entekhabie ComboBox be StoredProcedure ferestade beshe, pishnahad mikonam az Id e Bind shode be SelectedValue e ComboBox estefade beshe。Nvarchar ro be SP ferestadan kare dorosti nist。
尊敬的先生/女士,
ComboBox 始终是信息系统中 LookUp 的替代品,就像只有两列 Id 和 Describer 的表。如果您要将 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