مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

efj_7@yahoo.com

عضویت از 1395/03/27

استور پروسجیر داینامیک

  • یکشنبه 21 خرداد 1396
  • 11:38
تشکر میکنم

سلام

هدف من از نوشتن استور پروسیجر های زیر اینه که بتونم ، چند تا فیلتر رو به صورت همزمان داشته باشم و اینکه ممکنه یکی از فیلد ها بیشتر از یک پارامتر داشته باشه مثلا اطلاعاتی رو بخوام ببینم که منطقش هم شرق ، هم مرکزه هم غرب

که تو استور پروسیجر دوم دچار مشکل شدم .

استور پروسیجر اولم

@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)   )

 

پاسخ های این پرسش

تعداد پاسخ ها : 0 پاسخ
در حال حاضر هیچ پاسخی ارسال نشده است
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)