修改BAQ以使用参数进行查询
本文关键字:查询 参数 BAQ 修改 | 更新日期: 2023-09-27 18:21:50
我创建了一个动态查询,它可以从外部BAQ返回数据集。我希望dyanmic查询只返回符合我解析的参数的记录。
这是我迄今为止的代码:
// 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());
}
我创建的代码仍然返回表中的所有值,而不会将返回的行限制为满足参数条件的行。有人能帮我解释为什么会发生这种事吗?
您需要在BAQ中创建一个参数。
打开BAQ编辑器并导航到Phrase Build选项卡,选择要将参数添加到的表。
在下一节的表中添加一个新条件,过滤器类型将为"指定参数"。注意参数名称。
保存BAQ。
回到您的自定义中,修改paramRow["ParameterName"]=您在BAQ中创建的参数名称。