| 2.2.7.9.1 QueryResult::Build
 DescriptionCreate a query
 Search origin object within given dataset
 Syntaxint Build( LPCSTR lpcszExp, DWORD dwCntrl = 0, LPCSTR lpcszFilterFunc = NULL ) 
 int Build( vector<string> & vs, QUERYRESULTBUILD nType ) Parameters lpcszExp[input] query expression. Syntax: 
SELECT Objects FROM Range WHERE Condition
 
| keyword type | keywords |  
| Query | select, from, where, and, or, not, like, casesensitive |  
| Object | datasheet, worksheet, matrixsheet, graphlayer, folder, book, workbook, matrixbook, graphbase,	graph, layout, notes, column, column_y column_z, matrixobject, dataset, loosedataset, virtualmatrix, functionplot, namedrange |  
| Range | project, activefolder, favoritefolder, recursive, shortcut, embeded |  
| Property | _type, _sname, _lname, _datasettype, _comments, _visible, column_p, column_d, column_[UserParameter] |  
| _datasettype | dep, indep |  
| Dateset type | v ( Virtual Matrix ), r ( Named Range ), f ( Function Plot ), l ( Loose Dataset ), n ( Normal ) |  
| Column Designation | x, y, z, e, l, m, n |   dwCntrl[input] if dwCntrl = QUERYRESULTBUILDCTRNL_KEEP_LAST_RESULT, it will keep last query's result lpcszFilterFunc[input] filter function name
 
  vs[input] dataset names nType[input] origin object type
 ReturnNumber of found objects
 Number of found objects
 ExamplesEX1
 This example shows how to use the filter function
 BOOL HasData(OriginObject& obj, QUERYRESULTS_FILTER_ELEMENTTYPE nType)
{
    if ( QUERYRESULTS_FILTER_ELEMENTTYPE__LAYER != nType )
        return TRUE;
    Worksheet wks;
    wks = (Worksheet)obj;
    if(!wks)
        return TRUE;
    
    matrix mat;
    mat.CopyFromWks(wks);
    mat.RemoveEmptyRows();
    return mat.GetNumCols() > 0;
}
void Build_ex()
{
    QueryResult qr;
    
    Project.Open();
    vector<string> vsFiles = {"Counts", "Inset"};
    
    out_str("Find Y columns( no col(C) ):");
    for(int ii = 0; ii < vsFiles.GetSize(); ii++)
    {
        //---prepare wks
        string strFile = GetAppPath(TRUE) + "Samples\\Graphing\\" + vsFiles[ii] + ".dat";
        ASCIMP ai;
        if( 0 == AscImpReadFileStruct(strFile, &ai) )
        {
            Worksheet wks;
            wks.Create();
            wks.ImportASCII(strFile, ai);
        }
        //---
        string strSQL;
        strSQL.Format("select COLUMN from [%s] where _SNAME != 'C' and _TYPE == Y", vsFiles[ii]);
        int nRet = qr.Build(strSQL, QUERYRESULTBUILDCTRNL_KEEP_LAST_RESULT);
        out_int("nRet=", nRet);
    }
    out_int("size=", qr.Size());
    
    vector<string> vsNames;
    qr.GetNames(vsNames, QUERYRESULTNAME_RANGE);
    for(ii = 0; ii < vsNames.GetSize(); ii++)
    {
        out_str( vsNames[ii] );
    }
    
    vector<string> vsInfo;
    qr.GetColInfo(vsInfo, QUERYRESULTCOL_VALUE, 1);
    for(ii = 0; ii < vsInfo.GetSize(); ii++)
    {
        out_str( vsInfo[ii] );
    }
    
    qr.Clear();
    
    out_str("\nFind wks has data:");
    qr.Build("Select WORKSHEET from ACTIVEFOLDER", 0, "HasData");
    vsNames.SetSize(0);;
    qr.GetNames(vsNames, QUERYRESULTNAME_SNAME);
    for(ii = 0; ii < vsNames.GetSize(); ii++)
    {
        out_str( vsNames[ii] );
    }
}EX2
 This example is about int Build( vector<string> & vs, QUERYRESULTBUILD nType )
 //prepare workbooks Book1, Book2
void Build_vs_ex()
{    
    QueryResult qr;
    vector<string> vs = {"Book1_A", "Book2_B"};
    QUERYRESULTBUILD nObjectType = QUERYRESULTBUILD_COLUMN;
    int nRet = qr.Build(vs, nObjectType);
    out_int("", nRet);
}EX3
 This example shows the Where condition allow different objects
 select COLUMN from Project where Book_SName like "Book*" and Sheet_SName like "Sheet1" and Column_LName like "YCO*" EX4
 This example is about column's user parameter, and numeric comparison
 select COLUMN from Project where Column_[ASD] like "*2*" or Column_D2 > 3 EX5
 This example shows the usage of keyword _Visible
 Select Column from Project where _Visible = false EX6
 This example shows how to get the corresponding X column
 Select Column_Y from Project where _SName like "D" RemarkSee AlsoHeader to Includedorigin.h
 |