2015-11-05 144 views
2

好當填充MSH Flex網格/顯示的資料,因此這個問題涉及到VB6和SQL Server 2008 我現在有上得到由一個簡單的存儲過程填充的我的形式之一FlexGrid的存儲過程來搜索

Create Proc [dbo].[sp_LoadGrid] 
As Begin 
Select FirstName, LastName, SEX, DOB, School 
from dbo.tblClients 

柔性網格上方有兩個文本框允許用戶通過名字或姓氏進行搜索。我已經寫了一個if語句,只需要在txt框中寫入任何字母,然後搜索網格(使用'%')。現在我必須將其重寫爲一個存儲過程。 這是我已經得到了,但它一直給我一些奇怪的錯誤

Creat PROC [dbo].[sp_LoadGridSearch] 
@FirstName varchar(25) = null 
@LastName varchar(25) = null 
As Begin 
Select FirstName,LastName,DOB,SSN,School 
From dbo.TblClients 

Where (FirstName like (@FIrstName + '%') or @FirstName is Null) Or 
(LastName like (@LastName + '%') or @LastName is Null) 
END 

基本上我需要做的是加載網格,如果用戶提出了一封信,無論是名字或姓氏文本框和按搜索,它會顯示客戶的姓名是以該特定字母開頭的。

我不斷收到錯誤說sp_cursoropen/sp.cursorprepare.The語句參數只能是一個批次或具有單一選擇一個存儲過程,而無需瀏覽,通過計算或可變分配

+0

我見你缺少一個逗號來分隔這兩個參數,只需在第二個參數聲明前加'''。 –

回答

0
create procedure spSearch @fName varchar(25) = null, @lName varchar(25) = null 
as 
declare @condition varchar(512) 
set @condition = '1=1' 
if(not @fName is null) 
    set @condition = @condition + ' and FirstName like ''' + @fName + '%''' 
if(not @lName is null) 
    set @condition = @condition + ' and LastName like ''' + @lName + '%''' 
exec('select FirstName,LastName,DOB,SSN,School from dbo.TblClients where ' + @condition) 
GO