meta data for this page
ibec_ds_Locate
Locates single or multiple specified search values in a dataset.
Description
ibec_ds_Locate locates single or multiple specified search values in a dataset. If KeyFields lists a single field, KeyValues specifies the value for that field on the desired record. To specify multiple search values, pass a variant array as KeyValues, or construct a variant array on the fly using the ibec_Array function.
Syntax
function ibec_ds_Locate(Dataset : variant; KeyFields : string; KeyValues : array of variant; Options : integer) : Boolean;
ibec_ds_Locate | searches Dataset for a specified record and makes that record the active record. |
KeyFields | is a string containing a semicolon-delimited list of field names in which to search. |
KeyValues | is a variant array containing the values to match in the key fields. |
Examples
ibec_ds_Locate('Company;Contact;Phone', ibec_Array('Sight Diver', 'P', '408-431-1000'), __loPartialKey);
or
Keys[0] = 'Sight Diver'; Keys[1] = 'P'; Keys[2] = '408-431-1000'; ibec_ds_Locate('Company;Contact;Phone', Keys, __loPartialKey);
Options is a set of flags that optionally specifies additional search latitude when searching on string fields. If Options contains the loCaseInsensitive flag, then ibec_ds_Locate ignores case when matching fields. If Options contains the loPartialKey</color> flag, then ibec_ds_Locate allows partial-string matching on strings in KeyValues. If Options is 0 or NULL or if the KeyFields property does not include any string fields, Options is ignored. This function returns True if a record is found that matches the specified criteria and the cursor repositioned to that record. Otherwise it returns False. === Example === execute ibeblock returns (FieldName varchar(100)) as begin select * from rdb$relation_fields as dataset ds; try ibec_ds_Sort(ds, 'RDB$RELATION_NAME, RDB$FIELD_POSITION'); res = ibec_ds_Locate(ds, 'RDB$RELATION_NAME', 'RDB$FIELDS', loPartialKey); while (res) do begin FieldName = ibec_ds_GetField(ds, 'RDB$FIELD_NAME'); FieldName = ibec_Trim(FieldName); suspend; ibec_ds_Next(ds); res = not ibec_ds_EOF(ds); if (res) then begin RelName = ibec_Trim(ibec_ds_GetField(ds, 'RDB$RELATION_NAME')); res = RelName = 'RDB$FIELDS'; end; end; finally ibec_ds_Close(ds); end; end