Hi,
I want to get search result that match 2 columns' value.
Example, the column B's text should be 10041109 and column D's text should be Qt.
But I can not get correct search result by my following code:
procedure TForm1.BtnReadClick(Sender: TObject);
var
MyWorkbook:TsWorkbook;
MyWorksheet:TsWorksheet;
cell:PCell;
MyDir: string;
InputFilename: string;
MySearchParams1,MySearchParams2: TsSearchParams;
MyRow,MyCol: Cardinal;
begin
// Open the input file
MyDir := ExtractFilePath(ParamStr(0));
InputFileName := MyDir + 'PartData.xls';
MyWorkbook:=TsWorkbook.Create;
MyWorkbook.Options:=MyWorkbook.Options+[boReadFormulas];
MyWorkbook.ReadFromFile(InputFileName,sfExcel8);
MyWorksheet:=MyWorkbook.GetWorksheetByIndex(0);
//Search
MySearchParams1.SearchText:=trim(EdtPart.Text);
MySearchParams1.Within:=swWorksheet;
MySearchParams1.Options:=[soEntireDocument]+[soCompareEntireCell];
MySearchParams2.SearchText:=trim(EdtCtmCode.Text);
MySearchParams2.Within:=swWorksheet;
MySearchParams2.Options:=[soAlongRows]+[soCompareEntireCell];
// Create search engine and execute search
with TsSearchEngine.Create(MyWorkbook) do
begin
if FindFirst(MySearchParams1,MyWorksheet,MyRow,MyCol) and FindFirst(MySearchParams2,MyWorksheet,MyRow,MyCol) then
begin
sBarInfo.SimpleText:='First '+MySearchparams2.SearchText+' found in cell '+GetCellString(MyRow, MyCol);
cell:=MyWorksheet.GetCell(MyRow, MyCol-1);
edtCustomer.Text:=MyWorksheet.ReadAsText(cell);
cell:=MyWorksheet.GetCell(MyRow, MyCol+2);
EdtCstPN.Text:=MyWorksheet.ReadAsText(cell);
cell:=MyWorksheet.GetCell(MyRow, MyCol+1);
edtName.Text:=MyWorksheet.ReadAsText(cell);
cell:=MyWorksheet.GetCell(MyRow, MyCol+4);
edtQty.Text:=MyWorksheet.ReadAsText(cell);
end;
Free;
end;
MyWorkbook.Free;
end;
When column B's text is 10041109 and column D's text is Qt, I should get search result Row 448, but actually result I get is Row 442.
I know the second search for column D's text not with the result for first search, but I don't know how to do it?
Is it a way to get search within the range of first search result?
Or tell me how to solve my search problem?
I attach the excel file here.
Thanks!