سلام
هدف من از نوشتن استور پروسیجر های زیر اینه که بتونم ، چند تا فیلتر رو به صورت همزمان داشته باشم و اینکه ممکنه یکی از فیلد ها بیشتر از یک پارامتر داشته باشه مثلا اطلاعاتی رو بخوام ببینم که منطقش هم شرق ، هم مرکزه هم غرب
که تو استور پروسیجر دوم دچار مشکل شدم .
استور پروسیجر اولم
@Shargh nvarchar(50)='', @Markaz nvarchar(50)='', @Gharb nvarchar(50)='', select * From Acceptor Left Outer Join InstallationProject On InstallationProject.Terminal = Acceptor.Terminal where ((terminalstatus = N'منتظر نصب' OR terminalstatus = N'منتظر نصب با کد ریالی') AND InstallStatus = 'False' ) AND TakhsisDate < @TakhsisFinishDate AND ( (Acceptor.Area = @Shargh OR @Shargh IS NULL) OR (Acceptor.Area = @Markaz OR @Markaz IS NULL) OR (Acceptor.Area = @Gharb OR @Gharb IS NULL) )
که به درستی کار میکنه ، اما در استور پروسیجر دوم تعدا فیلد ها برای فیلتر رو بیشتر کردم ، زمانی که پارامتر رو به این صورت تعریف میکنم : @Gharb nvarchar(50)=''
فیلتر TerminalStatus کار میکنه و بقیه فیلتر ها کار نمیکنند
و زمانی که پارامتر رو به این صورت تعریف میکنم :
@Gharb nvarchar(50)=null
فیلتر TerminalStatus کار نمیکنه و بقیه فیلتر ها کار میکنند
استور پروسیجر دوم :
@Terminal NVARCHAR(50)=NULL, @Serial NVARCHAR(50)=NULL, @Area NVARCHAR(50)=NULL, @City NVARCHAR(50)=NULL, @AdminName NVARCHAR(50)=NULL, @TechnicianName NVARCHAR(50)=NULL, @InstallTechnicianName NVARCHAR(50)=NULL, @ProjectType NVARCHAR(50)=NULL, @TerminalStatus1 NVARCHAR(50)='', @TerminalStatus2 NVARCHAR(50)='', @TerminalStatus3 NVARCHAR(50)='', @TerminalStatus4 NVARCHAR(50)='', @TerminalStatus5 NVARCHAR(50)='', @FromDate datetime=NULL, @ToDate datetime=NULL Select InstallationProject.Terminal,InstallationProject.Serial,InstallationProject.TechnicianName as InstallTechnician,InstallationDate ,InstallationProject.LackInstallReason,InstallationProject.InstallReason,InstallationProject.AdminComment ,InstallationProject.DateInstallationDeadline,InstallationProject.TimeInstallationDeadline, InstallationProject.SmsSend ,Acceptor.Area,Acceptor.City,Acceptor.TerminalStatus,Acceptor.StoreName,Acceptor.AcceptorName,Acceptor.Phone,Acceptor.Mobile,Acceptor.Bank ,Acceptor.AdminName,Acceptor.TechnicianName,Acceptor.TakhsisDate,Acceptor.Address,Acceptor.ProjectType,Acceptor.PMCodeRiali,Acceptor.DailyTransactionCount,Acceptor.DailyTransactionPrice ,CentralWarehouse.Date as InputDate ,CentralWarehouse.Time as InputTime From InstallationProject left outer join Acceptor on Acceptor.Terminal=InstallationProject.Terminal left outer join CentralWarehouse on CentralWarehouse.Serial = Acceptor.Serial Where Moved='0' AND (InstallationProject.Terminal = @Terminal OR @Terminal IS NULL ) AND (InstallationProject.Serial = @Serial OR @Serial IS NULL) AND (Acceptor.Area = @Area OR @Area IS NULL) AND (Acceptor.City = @City OR @City IS NULL) AND (Acceptor.AdminName = @AdminName OR @AdminName IS NULL) AND (Acceptor.TechnicianName = @TechnicianName OR @TechnicianName IS NULL) AND (InstallationProject.TechnicianName = @InstallTechnicianName OR @InstallTechnicianName IS NULL) AND (Acceptor.ProjectType = @ProjectType OR @ProjectType IS NULL) AND ( (Acceptor.TerminalStatus = @TerminalStatus1 OR @TerminalStatus1 IS NULL) OR (Acceptor.TerminalStatus = @TerminalStatus2 OR @TerminalStatus2 IS NULL) OR (Acceptor.TerminalStatus = @TerminalStatus3 OR @TerminalStatus3 IS NULL) OR (Acceptor.TerminalStatus = @TerminalStatus4 OR @TerminalStatus4 IS NULL) OR (Acceptor.TerminalStatus = @TerminalStatus5 OR @TerminalStatus5 IS NULL) ) AND (@FromDate IS NULL OR @ToDate IS NULL OR (Acceptor.TakhsisDate >= @FromDate AND Acceptor.TakhsisDate <= @ToDate) )
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)