Use the following find modes with the record find methods:
FairCom DB API |
FairCom DB API .NET |
Explanation |
---|---|---|
CTFIND_EQ |
EQ |
Find a record equal to the target |
CTFIND_LT |
LT |
Find a record less than target |
CTFIND_LE |
LE |
Find a record less or equal than target |
CTFIND_GT |
GT |
Find a record greater than target |
CTFIND_GE |
GE |
Find a record greater or equal than target |
Note: The Find Mode CTFIND_EQ requires that the target contains values for all segments that compose the index and the index cannot allow duplicates.
Note: FairCom DB API .NET defines this mode with the FIND_MODE enum.
A target key can be built using most of the steps used to find a record using ctdbFindRecord(). To build a target key you must:
/* build a target key */
CTHANDLE hRecord = ctdbAllocRecord(hTable);
TEXT key[256];
VRLEN keylen = sizeof(key);
/* clear the record buffer */
ctdbClearRecord(hRecord);
/* set the default index to index 0 */
ctdbSetDefaultIndex(hRecord, 0);
/* populate the 'product' field (field 1)*/
ctdbSetFieldAsString(hRecord, 1, "DISKETTE");
/* build the target key */
if (ctdbBuildTargetKey(hRecord, CTFIND_EQ, key, &keylen) != CTDBRET_OK)
printf("Record not found\n");
A record can also be found by passing a target key already built by calling ctdbFindTargetKey(). ctdbFindTargetKey() takes as parameters the record handle, a pointer to a target key, and the find mode.
/* find record with a target key */
if (ctdbFindTargetKey(hRecord, key, CTFIND_EQ) != CTDBRET_OK)
printf("Record not found\n");
A record can be quickly located if the ROWID for that record is known by calling ctdbFindRowid(). ctdbFindRowid() takes as parameters the record handle, the ROWID value and the find mode.
/* find record with rowid of 1000 */
if (ctdbFindRowid(hRecord, (CTROWID)1000, CTFIND_EQ) != CTDBRET_OK)
printf("Record not found\n");