【お知らせ】この部分は英語原文のみでの提供となります。何卒ご了承ください。
2.2.4.46.67 Worksheet::SelectRows
Contents
Description
Select rows from worksheet based on a LabTalk condition expression
Syntax
int SelectRows( LPCSTR lpcszCondition, vector<uint> & vnRowIndices, int r1 = 0, int r2 = -1, int nMax = -1, LPCSTR lpcszBeforeLoopScript = NULL, LPCSTR lpcszBeforeIfScript = NULL, LPCSTR lpcszAfterIfScript = NULL, DWORD dwCntrl = 0, LPCSTR lpcszAfterLoopScript = NULL )
Parameters
- lpcszCondition
- [input] LabTalk conditional expression involving columns in the worksheet. LabTalk variable i is automatically declared and can be used for each row
- vnRowIndices
- [output] vector to receive the row indices, 0-offset. default is 0
- r1
- [input] starting row index, 0 offset. default is 0.
- r2
- [input] ending row index, 0 offset, inclusive, -1(by default) to indicate the end of data in worksheet
- nMax
- [input] optional maximum number of rows to select, -1(by default) to have no limit
- lpcszBeforeLoopScript
- [input] LabTalk script to be executed before the looping start, this is where you can make declarations to be used in lpcszCondition.
- default is NULL.
- lpcszBeforeIfScript
- [input] LabTalk script to be executed before the if test, this is where you can use temp variable to build more complex conditions.
- default is NULL.
- lpcszAfterIfScript
- [Input] LabTalk script to be executed after the if test, the if test result is in the an local int variable called _IF_TRUE.
- default is NULL.
- dwCntrl
- [input] bits to control the conditional expression, Can be:
- WKS_SELECT_ROWS_CHECK_IGNORE_HIDDEN_ROW,
- WKS_SELECT_ROWS_XL_COLUMN_NAME.
- lpcszAfterLoopScript
- [input] LabTalk script to be executed after the looping end.
- default is NULL.
Return
number of rows (size of vnRowIndices) if success, otherwise returns
-1 if lpcszCondition has syntax error
-2 if lpcszBeforeScript has syntax error
Examples
EX1
// example to test col(2) alias as a for missing values // we first define the NULL const as 0/0 and then // we setup alias a as col(2) void Worksheet_SelectRows_Ex1(string strCond = "a==null", string strPre = "const null=0/0;range a=2") { Worksheet wks("Book1"); Worksheet wksDest("Book2"); vector<uint> vnRowIndices; vector<uint> vnCols = {0,2}; int nn = wks.SelectRows(strCond, vnRowIndices, 0, -1, -1, strPre); if(nn < 0) out_str("User cancel"); else if(nn == 0) out_str("no matching row"); else { BOOL bRet = wks.Extract(wksDest, vnRowIndices, vnCols); if(bRet) out_str("done"); } }
EX2
// example on how to select cells by matching text // wildcard support is automatic if either * or ? characters are found in the // testing string. // // To try, put data into a sheet with some text in col(2) // this function can allow you to select rows by a string // like // Worksheet_SelectRows_Ex2 "my string" // Worksheet_SelectRows_Ex2 *Boston* void Worksheet_SelectRows_Ex2(string strCell = "*about*") { string strPre = "range b=2"; string strCond = "b=="; strCond += "\"" + strCell + "\""; Worksheet wks = Project.ActiveLayer(); vector<uint> vnRowIndices; int nn = wks.SelectRows(strCond, vnRowIndices, 0, -1, -1, strPre); Grid gg; if(gg.Attach(wks)) { vector<int> vnRows; vnRows = vnRowIndices; if(nn) gg.SetSelection(vnRows); else gg.SetSelection(NULL); out_int("Number of rows =", nn); } }
Remark
See Also
Worksheet::Extract, Grid::SetSelection, Worksheet::SetSelectedRange
Header to Include
origin.h