2016-08-29 15 views
0

私は以下のストアドプロシージャを使用してクリスタルレポートを生成しています。私のレポートは、主にアーケードまたはフランチャイズの2つの値に基づいてデータをフィルタリングします。ストアドプロシージャの出力が正しくありません

私はArcade = 1、Franchise = 2、Both = 0.としてデータをフィルタリングします。OutletTypeパラメータはこれらのint値を取得します。

1つの特定の値をフィルタリングすると、アーケード値とフランチャイズ値の両方が得られます。

ALTER PROCEDURE [dbo].[PrintReceiptCancellationWorkflow] 

@EntryType int, 
@OutletType int, 
@RequestedUser varchar(50), 
@FromDate DateTime2, 
@ToDate DateTime2, 
@OutletCode varchar(10), 
@CancelledUser varchar(20), 
@Status int 

AS 
    BEGIN 
    SELECT 
     Outlets.OutletDesc AS 'Branch', 
     Receipt.CancelUser AS 'RequestedBy', 
     Receipt.RecDate AS 'ReqDateTime', 
     --ReceiptCancellationStatus.ApprovedStatus AS 'Status', 
     ReceiptCancellationStatus.StatusDesc As Status, 
     WorkflowRequestQueue.CposReference AS 'WCRNo', 
     Receipt.ReceiptNo AS 'ReceiptNo', 
     Receipt.PaymentMode AS 'PaymentMode', 
     Receipt.AppliedAmount AS 'Amount', 
     WorkflowRequestQueue.AppRejUser AS 'CompletedBy', 
     WorkflowRequestQueue.AppRejDateTime AS 'CompletedDateTime', 
     EntryTypes.EntryType AS 'PaymentCategory', 
     WorkflowRequestQueue.AppRejComment AS 'Comment',  
     OutletCategories.CatDesc As 'OutletType' 


    FROM 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 

WHERE (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) AND (CONVERT(DATE,WorkflowRequestQueue.AppRejDateTime) <= @ToDate)) OR 
     Outlets.OutletCode = @OutletCode OR 
     WorkflowRequestQueue.ApprovedPerson = @CancelledUser OR 
     (WorkflowRequestQueue.ApprovedStatus = @Status OR WorkflowRequestQueue.ApprovedStatus = 0) 



    END 

アウトレットの種類は、あなたの条件がORされる場合の値は、

 $scope.VendorDropdown = [ 
     { "text": "Select", "value": "0" }, 
     { "text": "Arcade", "value": "1" }, 
     { "text": "Franchise", "value": "2" }, 

     ]; 

レポート生成コード、

 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); 
+0

をいただきました! 'Outlets.OutletType' – KrazzyNefarious

+0

それは整数型であるのデータ型。 –

+0

C#コードを確認しました。値は正しく渡されます。 –

答えて

1

すべてをドロップダウン。これは、そのうちの1つが満たされれば、その行が含まれることを意味します。

あなたはおそらく一緒にAND演算異なる条件で代わりにこのWHERE試してみてください:

WHERE (Outlets.OutletType = @OutletType OR Outlets.OutletType = 0) AND 
     (Receipt.EntryTypeId = @EntryType OR Receipt.EntryTypeId = 0) AND 
     Receipt.CancelUser = @RequestedUser AND 
     (
      (CONVERT(DATE,WorkflowRequestQueue.AppRejDateTime) >= @FromDate) AND 
      (CONVERT(DATE,WorkflowRequestQueue.AppRejDateTime) <= @ToDate) 
     ) AND 
     Outlets.OutletCode = @OutletCode AND 
     WorkflowRequestQueue.ApprovedPerson = @CancelledUser AND 
     (WorkflowRequestQueue.ApprovedStatus = @Status OR WorkflowRequestQueue.ApprovedStatus = 0) 
関連する問題