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
Post a Comment