sql server - Incorrect output from stored procedure -


i using below stored procedure generate crystal report.my report filters data based on 2 possible values, arcade or franchise.

i filter data arcade = 1 , franchise = 2 , both = 0.the outlettype parameter these int values.

when filter 1 particular value gives me both arcade , franchise values.

alter procedure [dbo].[printreceiptcancellationworkflow]    @entrytype int, @outlettype int, @requesteduser varchar(50), @fromdate datetime2, @todate datetime2, @outletcode varchar(10), @cancelleduser varchar(20),  @status int      begin     select           outlets.outletdesc 'branch',         receipt.canceluser 'requestedby',         receipt.recdate 'reqdatetime',         --receiptcancellationstatus.approvedstatus 'status',         receiptcancellationstatus.statusdesc status,         workflowrequestqueue.cposreference 'wcrno',         receipt.receiptno 'receiptno',         receipt.paymentmode 'paymentmode',         receipt.appliedamount 'amount',         workflowrequestqueue.apprejuser 'completedby',         workflowrequestqueue.apprejdatetime 'completeddatetime',         entrytypes.entrytype 'paymentcategory',         workflowrequestqueue.apprejcomment 'comment',             outletcategories.catdesc 'outlettype'          receipt         inner join         outlets on receipt.outletcode = outlets.outletcode         left outer join         entrytypes on receipt.entrytypeid = entrytypes.id         left outer join         workflowrequestqueue on receipt.cposreference = workflowrequestqueue.cposreference         left outer join         outletcategories on outlets.outlettype = outletcategories.catcode         left outer join          receiptcancellationstatus on workflowrequestqueue.approvedstatus = receiptcancellationstatus.id    (outlets.outlettype = @outlettype or outlets.outlettype = 0) or         (receipt.entrytypeid = @entrytype or receipt.entrytypeid = 0) or         receipt.canceluser = @requesteduser or         (( convert(date,workflowrequestqueue.apprejdatetime) >= @fromdate) , ( convert(date,workflowrequestqueue.apprejdatetime) <= @todate)) or         outlets.outletcode = @outletcode or         workflowrequestqueue.approvedperson = @cancelleduser or         (workflowrequestqueue.approvedstatus = @status or workflowrequestqueue.approvedstatus = 0)        end 

outlet type drop down values,

     $scope.vendordropdown = [          { "text": "select", "value": "0" },          { "text": "arcade", "value": "1" },          { "text": "franchise", "value": "2" },          ]; 

report generation code,

     object paymentcategory = convert.toint32(request.form["paymentcategory"]);                         object vendor = convert.toint32(request.form["vendor"]);                         object requesteduser = convert.tostring(request.form["requesteduser"]);                         object cancelleduser = convert.tostring(request.form["cancelleduser"]);                         object fromdate = convert.todatetime(request.form["datefrom"]);                         object todate = convert.todatetime(request.form["dateto"]);                         object status = convert.toint32(request.form["status"]);                         object outlet = convert.tostring(request.form["outlet"]);                          if (isexcel)                         {                             myreport.load(server.mappath("~/cposreport/mis/cancellationreports/receiptcancellationworkflow.rpt"));                         }                         else {                          myreport.load(server.mappath("~/cposreport/mis/cancellationreports/receiptcancellationworkflow.rpt"));                         }                         myreport.setparametervalue("@entrytype", paymentcategory);                         myreport.setparametervalue("@outlettype",vendor );                         myreport.setparametervalue("@requesteduser", requesteduser);                         myreport.setparametervalue("@cancelleduser", cancelleduser);                         myreport.setparametervalue("@fromdate", fromdate);                         myreport.setparametervalue("@todate", todate);                         myreport.setparametervalue("@status", status);                         myreport.setparametervalue("@outletcode", outlet); 

all of conditions or'ed. means if 1 of them satisfied, row included.

you should try in stead different conditions and'ed together:

where   (outlets.outlettype = @outlettype or outlets.outlettype = 0) ,         (receipt.entrytypeid = @entrytype or receipt.entrytypeid = 0) ,         receipt.canceluser = @requesteduser ,         (             ( convert(date,workflowrequestqueue.apprejdatetime) >= @fromdate) ,              ( convert(date,workflowrequestqueue.apprejdatetime) <= @todate)         ) ,         outlets.outletcode = @outletcode ,         workflowrequestqueue.approvedperson = @cancelleduser ,          (workflowrequestqueue.approvedstatus = @status or workflowrequestqueue.approvedstatus = 0) 

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -