Locate on a non-indexed field in a TTable (Views: 29)
Problem/Question/Abstract: How to locate on a non-indexed field in a TTable Answer: The following function can be added to your to your unit and called as follows: Locate(Table1, Table1LName, 'Beman'); Table1 is your table component, Table1LName is TField you've add with the fields editor (double click on the table component) and 'Beman' is the name you want to find. Locate will find SValue in a non-indexed table function Locate(const oTable: TTable; const oField: TField; const sValue: string): Boolean; var bmPos: TBookMark; bFound: Boolean; begin Locate := False; bFound := False; if not oTable.Active then Exit; if oTable.FieldDefs.IndexOf(oField.FieldName) < 0 then Exit; bmPos := oTable.GetBookMark; with oTable do begin DisableControls; First; while not EOF do if oField.AsString = sValue then begin Locate := True; bFound := True; Break; end else Next; end; if (not bFound) then oTable.GotoBookMark(bmPos); oTable.FreeBookMark(bmPos); oTable.EnableControls; end; |