返回首页

海友,

我有要求像serching(州,区,曼达,农作物,用户名,FROMDATE,TODATE)明智的......

我写的查询最多的用户名这样的工作,但我SELCT FROMDATE和TODATE它不工作的什么是错的这个..

plz帮助我......

我的查询是

ALTER Proc [dbo].[sp_SearchAllReports1]

-- sp_SearchAllReports1  null,null,null,null,null,'10/11/2001'

(               

 @intStateId int =null,

 @intDistrictId int=null,

 @intMandalId int=null,

 @CropsList varchar(50) =null,

 @varCreatedBy varchar(50)=null,

 @fromdate date=null,

 @todate date=null   

)               

as                 

Begin                 

    declare @query varchar (max)

    set @query='SELECT tabProgram.varProgramCode, dbo.tabDistricts.varDistrictName, dbo.tabstates.varstatename,  dbo.tabMandal.varMandalName,dbo.tabProgram.varVillageName, dbo.tabProgram.intStateId, dbo.tabProgram.intDistrictId, dbo.tabProgram.intFarmers, dbo.tabProgram.intMandalId,dbo.tabProgram.ProgSponseredBy, dbo.tabProgram.DateOfConducting,

     dbo.tabProgram.intProgramId AS Expr1,

     dbo.tabProgram.CropsList, tabProgram.varVillageName ,

     tabMandal.varMandalName, 

     tabDistricts.varDistrictName

     ,CONVERT(varchar(20),casestudy.dtConducteddate,103)as dtConducteddate,

     dbo.casestudy.* FROM dbo.tabProgram

     INNER JOIN dbo.tabMandal

     ON

     dbo.tabProgram.intMandalId = dbo.tabMandal.intMandalId INNER JOIN dbo.tabDistricts ON dbo.tabProgram.intDistrictId = dbo.tabDistricts.intDistrictId INNER JOIN dbo.tabstates ON dbo.tabDistricts.intstateid = dbo.tabstates.intstateid INNER JOIN dbo.casestudy ON dbo.tabProgram.intProgramId = dbo.casestudy.intProgramId  where 1=1' 

        if (@intStateId <> '0')

        begin

        set @query=@query+ ' and tabProgram.intStateId ='+convert (varchar(10),@intStateId)

        end    

        if (@intDistrictId <> '0')

        begin

        set @query=@query+ ' and tabProgram.intDistrictId ='+convert (varchar(10),@intDistrictId)

        end

        if (@intMandalId <> '0')

        begin

        set @query=@query+ ' and tabProgram.intMandalId ='+convert (varchar(10),@intMandalId)

        end 

        if @CropsList is not null

        begin

        set @query=@query+ ' and tabProgram.CropsList like'+ '%'+@CropsList+'%'

        end    

        if @varCreatedBy is not null

        begin

        set @query=@query+ ' and tabProgram.varCreatedBy ='+@varCreatedBy

        end

        if @fromdate is not null

        begin

        set @query=@query+ 'and  CAST(casestudy.dtConducteddate AS DATE)  < '+ Convert (varchar(10),CAST(@fromdate AS DATE))

        end 

        if @todate is not null

        begin

        set @query=@query+ ' and  CAST(casestudy.dtConducteddate AS DATE)  < '+ Convert (varchar(10),CAST(@todate AS DATE))

        end

 

       

        exec (@query)

                                      

end


我希望有人帮助...
谢谢
Venkat.S

回答

评论会员:游客 时间:2012/02/07
|首先,我不知道你为什么有各种有条件的地方开始设置结束。都可以直接写入,因为它是所有查询参数是一个可以直接使用的形式已经存在的存储过程。如果为null的任何检查可以做到早期根据需要,在业务/数据库层。即使在SP的话,就可以在一开始拍摄。现在,日期比较,您可以使用与关键字。有在下面的样子:imgsrc=因此,您的where子句应该是这样的:codeprelang="SQL"spanclass="code-keyword"SELECT/span*spanclass="code-keyword"FROM/spanMyTablespanclass="code-keyword"WHERE/spanDBCheckDatespanclass="code-keyword"BETWEEN/span@FromDatespanclass="code-keyword"AND/span@ToDate spanclass="code-comment"--/spanspanclass="code-comment"OR/spanspanclass="code-keyword"SELECT/span*spanclass="code-keyword"FROM/spanMyTablespanclass="code-keyword"WHERE/spanDBCheckDate>@FromDatespanclass="code-keyword"AND/spanDBCheckDate<@ToDate/pre/code
萨钦Suryawanshi
评论会员:游客 时间:2012/02/07
尝试..首先要转换的日期,使用101日期格式这是您的查询codepreset@query=@query+spanclass="code-string"'/spanspanclass="code-string"andCAST(casestudy.dtConducteddateASDATE)<'/span+Convert(varchar(spanclass="code-digit"10/span),CAST(@todateASDATE))/pre/code试试这个{体C3}我希望这将工作:拉杰什Anuhya:请您所需的事件更新面板的更新方法或设置的AutoPostBack="假"