2013-07-10 3 views
1

외부 BAQ에서 데이터 집합을 반환 할 수있는 동적 쿼리를 만들었습니다. 다이나믹 쿼리가 내가 파싱 한 매개 변수를 만족하는 레코드 만 리턴하기를 원합니다.매개 변수로 쿼리 할 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에서 작성한 매개 변수 이름을 수정하십시오.