From: dindin on
Hi all,

I'm using ppc2003 sdk to develop a app that operate CEDB.

my database name is filedb,
db struct:
property 1 name CEVT_LPWSTR
property 2 fielid CEVT_UI4
property 3 filepath CEVT_LPWSTR

create db:

SORTORDERSPECEX rgSortSpecs;
rgSortSpecs.wVersion = 1;
rgSortSpecs.wNumProps = 1;
rgSortSpecs.wKeyFlags = CEDB_SORT_UNIQUE;
rgSortSpecs.rgdwFlags[0] = CEDB_SORT_NONNULL;
rgSortSpecs.rgPropID[0] = CEVT_LPWSTR;

//SPECIFY DATBASE INOFRMATION
CEDBASEINFOEX stDBInfo;
stDBInfo.wVersion = 1;
stDBInfo.wNumSortOrder = 0;
stDBInfo.dwNumRecords = 0;
stDBInfo.dwFlags = CEDB_VALIDNAME|CEDB_VALIDSORTSPEC;
wcscpy(stDBInfo.szDbaseName, dbname);

CEOID oid = CeCreateDatabaseEx2(&m_guid, &stDBInfo);

open db:

SORTORDERSPECEX rgSortSpecs;
rgSortSpecs.wVersion = 1;
rgSortSpecs.wNumProps = 1;
rgSortSpecs.wKeyFlags = CEDB_SORT_UNIQUE;
rgSortSpecs.rgdwFlags[0] = CEDB_SORT_NONNULL;
rgSortSpecs.rgPropID[0] = CEVT_LPWSTR;

HANDLE hDB=CeOpenDatabaseEx2(
&m_guid, // guid of mounted database
&oid, // object identifier of database
dbname, // name of database
0,
// &rgSortSpecs, // Property id for sort order
0, // auto increment record pointer on ReadRecord
NULL); // do not receive notifications

seek db:
CEPROPVAL val;
val.val.lpwstr=name;
val.propid=CEVT_LPWSTR;

DWORD dwIndex;
CEOID oid =CeSeekDatabase(hDB, CEDB_SEEK_VALUEFIRSTEQUAL, (DWORD)&val,
&dwIndex);

seek result:
oid is 0
GetLastError() return ERROR_SEEK, which means The drive cannot locate a
specific area or track on the disk.

question:
1. I want to use name as sort order, but when i open db, which variant
of SORTORDERSPECEX define the name is sort order ?
2. when I seek with CEVT_LPWSTR, it seek with name or filepath ?
3. Why search result return ERROR_SEEK?

Thanks in advance.