2013-07-10 63 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中创建的参数名称。