2013-07-10 91 views
1

我創建了一個可以從外部BAQ返回數據集的動態查詢。我想要dyanmic查詢只返回符合我已解析的參數的記錄。修改BAQ以使用參數查詢

這是我到目前爲止的代碼:

// DynamnicQuery for BAQ 
     Epicor.Mfg.Core.Session epiSession = default(Epicor.Mfg.Core.Session); 
     epiSession = (Epicor.Mfg.Core.Session)POEntryForm.Session; 
     DynamicQuery dynamicQuery = new Epicor.Mfg.BO.DynamicQuery(epiSession.ConnectionPool); 
     //Build Data Set 
     QueryExecutionDataSet executionDS = new QueryExecutionDataSet(); 
     //Build parametors 
     QueryExecutionDataSet parameters = new QueryExecutionDataSet(); 
     DataRow paramRow = parameters.ExecutionParameter.NewRow(); 
     paramRow["ParameterName"] = "POSuggestionsView.PartNum"; 
     paramRow["ParameterValue"] = "10050886"; 
     paramRow["ValueType"] = "nvarchar(50)"; 
     paramRow["IsEmpty"] = "False"; 
     paramRow["RowIdent"] = ""; 
     paramRow["RowMod"] = ""; 
     paramRow["DBRowIdent"] = new byte[0]; 
     parameters.ExecutionParameter.Rows.Add(paramRow); 
     // Out variable which indicates if more results are available (likely for use with topNRecords) 
     bool hasMoreRecords = false; 
     //Executed named BAQ with parameter... 
     DataSet results = dynamicQuery.ExecuteByIDParametrized("AD-999-SB_POSuggestion", parameters, "", 0, out hasMoreRecords); 
     //Message Each Description.... 
     MessageBox.Show("Number of rows in Results = " + results.Tables["Results"].Rows.Count.ToString()); 
     foreach (DataRow item in results.Tables["Results"].Rows) 
     { 
      MessageBox.Show("Row Value = " + item["POSuggestionsView.PartNum"].ToString()); 
    }  

我所創建的代碼仍然返回所有在表中的值,而不限制返回的行,以滿足該參數的條件的人。任何人都可以幫我解釋爲什麼這會發生嗎?

回答

1

您需要在BAQ中創建一個參數。

打開BAQ編輯器並導航至Phrase Build選項卡,選擇要添加參數的表格。

在下面的部分添加一個新的標準到表中,過濾器類型將是「指定參數」。記下參數名稱。

保存BAQ。

回到您的自定義中修改paramRow [「ParameterName」] =您在BAQ中創建的參數名稱。