私のウェブフォームにはいくつかのチェックボックスが含まれています。特定のチェックボックスがオンになっている場合は、spの選択クエリに列名を追加します。たとえば、chklname、chkfname、chkcity、chkmobileのような4つのチェックボックスがあるとします。chklnameとchkfnameをチェックすると、クエリは次のようになります。
SELECT LastName,FirstName FROM table1
spでそれを書く方法は?
私のウェブフォームにはいくつかのチェックボックスが含まれています。特定のチェックボックスがオンになっている場合は、spの選択クエリに列名を追加します。たとえば、chklname、chkfname、chkcity、chkmobileのような4つのチェックボックスがあるとします。chklnameとchkfnameをチェックすると、クエリは次のようになります。
SELECT LastName,FirstName FROM table1
spでそれを書く方法は?
CREATE PROCEDURE ProcName
@chklname bit,
@chkfname bit,
@chkcity bit,
@chkmobile bit
AS
BEGIN
SET NOCOUNT ON;
--Only execute the statement if at least one of the checkboxes are set
if @chklname = 1 or @chkfname = 1 or @chkcity =1 or @chkmobile =1
begin
declare @sqlcommand nvarchar(max)
set @sqlcommand = N'Select '
if @chklname = 1
set @sqlcommand += N'FirstName '
if @chkfname = 1
begin
if len(@sqlcommand) > 1
set @sqlcommand += N','
set @sqlcommand += N'LastName '
end
if @chkcity = 1
begin
if len(@sqlcommand) > 1
set @sqlcommand += N','
set @sqlcommand += N'City '
end
if @chkmobile = 1
begin
if len(@sqlcommand) > 1
set @sqlcommand += N','
set @sqlcommand += N'Mobile '
end
set @sqlcommand += N' FROM table1'
exec sp_executesql @statement = @sqlcommand
end
END
GO
ここでできる最善のことは、フロントエンドコードを介してselectに含まれる列名の数を処理することです。
たとえば、4つのチェックボックスから、fnameとlnameのチェックボックスを2つだけ選択するとします。
したがって、sql selectステートメントを作成する前のフロントエンドで、ユーザーが選択したチェックボックスと選択していないチェックボックスを決定できます。これに基づいて、適切なselectステートメントを作成できます。