QueryDef 오브젝트

QueryDef 오브젝트는 데이터베이스로부터 특정 레코드를 검색하는 데 사용되는 조회에 필요한 매개변수를 정의합니다.

QueryDef 오브젝트에는 조회 표현식 및 표시 필드 목록이 포함됩니다. 조회 표현식은 조회에 필요한 검색 매개변수를 정의하며 복잡한 조건문 세트를 포함할 수 있습니다. 조회를 실행하려면 ResultSet 오브젝트를 작성한 후 해당 Execute 메소드를 호출해야 합니다. (Session 오브젝트 BuildResultSet 메소드를 사용하여 ResultSet 오브젝트를 작성할 수 있습니다.) ResultSet 오브젝트는 QueryDef 오브젝트의 표시 필드 목록을 사용하여 검색 결과를 요약할 수 있습니다.

QueryDef 오브젝트를 작성하려면 다음을 수행하십시오.

  1. Session 오브젝트의 BuildQuery 메소드를 호출하십시오. BuildQuery 메소드는 표시 필드 및 필터가 정의되지 않은 QueryDef 오브젝트를 리턴합니다.
  2. QueryDef 오브젝트에 조회에 필요한 필터 및 필드를 추가하십시오.

지정된 유형의 모든 레코드를 리턴하는 조회를 작성하려면 QueryDef 오브젝트를 작성하십시오. 하지만 이 오브젝트에 필터를 추가하지는 마십시오. 대신 QueryDef 오브젝트의 BuildField 메소드를 사용하여 리턴할 필드를 추가하십시오.

QueryDef 오브젝트에 필터 및 노드를 추가하여 좀 더 복잡한 조회를 작성할 수 있습니다. QueryDef 오브젝트 노드는 각각 하나 이상의 필터를 포함하는 하나 이상의 QueryFilterNode 오브젝트로 구성됩니다. 노드는 하나의 부울 연산자를 사용하여 해당 필터를 서로 그룹화합니다. QueryDef 오브젝트의 BuildFilterOperator 메소드를 사용하여 이 트리에 루트 노드를 작성합니다. 그런 다음, QueryFilterNode 메소드를 사용하여 나머지 노드 및 필터를 정의합니다. 필터 자체에 다른 비교 연산자를 사용하여 지정된 데이터와 필드의 관계를 테스트할 수 있습니다.

예를 들어, 다음과 같은 명령문이 있습니다.

Select * from <some defect> where (....) AND1 ((...) OR2 ( (...) AND3( (...) OR4 (...))))

루트 연산자는 AND (AND1)입니다. 다음 레벨의 하위 노드 연산자는 OR (OR2)입니다. 완전한 계층은 다음과 같습니다.

   AND1 (AND1 is the root operator)
   \
      OR2 (OR2 is suboperator of AND1)
       \
         AND3 (AND3 is suboperator of OR2)
         \
            OR4 (OR4 is suboperator of AND3) 
주: Session 오브젝트의 BuildSQLQuery 메소드를 사용하여 원시 SQL 조회 문자열로부터 조회를 생성할 수도 있습니다. 그러나 이 기법으로는 QueryDef 오브젝트를 작성할 수 없습니다.

피드백