Un oggetto QueryDef definisce i parametri per una query, che viene utilizzata per richiamare dei record specifici da un database.
Un oggetto QueryDef contiene un'espressione della query e un elenco di campi di visualizzazione. L'espressione della query definisce i parametri di ricerca per la query e può contenere una complessa serie di istruzioni condizionali. Per eseguire la query, è necessario creare un oggetto ResultSet e richiamare il relativo metodo Execute. (È possibile utilizzare il metodo BuildResultSet dell'oggetto Session per creare l'oggetto ResultSet.) L'oggetto ResultSet utilizza l'elenco di campi di visualizzazione nell'oggetto QueryDef per riepilogare i risultati della ricerca.
Per creare un oggetto QueryDef,
Per creare una query che restituisca tutti i record nel database, creare l'oggetto QueryDef più semplice dalla query di un campo che richiama il metodo BuildField dell'oggetto QueryDef.
È possibile aggiungere filtri e nodi ad un oggetto QueryDef per creare query più complesse. I nodi di un oggetto QueryDef sono costituiti da uno o più oggetti QueryFilterNode, ognuno dei quali contenenti uno o più filtri. I nodi raggruppano tutti relativi filtri in base ad un singolo operatore booleano. Utilizzare il metodo BuildFilterOperator dell'oggetto QueryDef per creare il nodo root in questa struttura ad albero. Dopo tale operazione, utilizzare i metodi di QueryFilterNode per definire i nodi e i filtri rimanenti. I filtri stessi possono utilizzare altri operatori di confronto per verificare la relazione di un campo rispetto ai dati specificati.
Ad esempio, nella seguente istruzione:
Select * from <some defect> where (....) AND1 ((...) OR2 ( (...) AND3( (...) OR4 (...))))
l'operatore root è AND (AND1). Il relativo operatore nodo figlio del livello successivo è un OR (OR2). La gerarchia completa è:
AND1 (AND1 is the root operator) \ OR2 (OR2 is suboperator of AND1) \ AND3 (AND3 is suboperator of OR2) \ OR4 (OR4 is suboperator of AND3)