George
asked on
CeSeekDataBaseEx fails error code 25 (SEEK_ERROR)
Hello,
I'm trying to search for a recond in a Windows CE database. : I do the falowing code :
This for the creation of the database
#define RF_TAG 0
#define RF_DESC 1
#define PL_RFID (MAKELONG(CEVT_LPWSTR,RF_T AG))
#define PL_DESC (MAKELONG(CEVT_LPWSTR,RF_D ESC))
CEDBASEINFO dbInfo;
memset (&dbInfo, 0, sizeof(dbInfo));
wcscpy (dbInfo.szDbaseName , TEXT("RfIdTag"));
dbInfo.dwFlags = CEDB_VALIDNAME ;
dbInfo.wNumSortOrder = 2;
dbInfo.rgSortSpecs[0].prop id = PL_RFID;
dbInfo.rgSortSpecs[0].dwFl ags = 0;
dbInfo.rgSortSpecs[1].prop id = PL_DESC;
dbInfo.rgSortSpecs[1].dwFl ags = 0;
dbInfo.dwDbaseType=0;
CeMountDBVol(guid,TEXT("\\ RfIdDataBa se.vol"),O PEN_EXISTI NG)
dbx = CeCreateDatabaseEx(guid, &dbInfo);
This part of code is working (there no error while running) becase the database is realy created.
Once the data base is created I insert a lot of records (this works to) the size of the database file is increasing:
CEPROPVAL myRec[2];
TCHAR * pRfTag = (TCHAR *) rfTag.GetString();
TCHAR * pRfDesc = (TCHAR *) rfDesc.GetString();
myRec[RF_TAG].propid = PL_RFID;
myRec[RF_TAG].val.lpwstr = pRfTag;
myRec[RF_DESC].propid = PL_DESC;
myRec[RF_DESC].val.lpwstr = pRfDesc;
CEOID rs = CeWriteRecordProps(m_CEDB, 0,2,myRec) ;
My problem is when i try to find a record using CeSeekDataBaseEx.
WORD cProps = 1;
//LPByte pBuff = NULL;
DWORD cByte = 0;
CEPROPVAL look;
USES_CONVERSION;
look.propid = PL_RFID;
look.val.lpwstr = T2W(lpszItem);
look.wFlags = 0;
look.wLenData = 0;
m_CEDB= OpenDataBase(_T("rfidDB.db "),0,CEDB_ AUTOINCREM ENT,NULL,0 );
if (m_CEDB != INVALID_HANDLE_VALUE)
{
CEOID oidSeek = CeSeekDatabaseEx(m_CEDB, CEDB_SEEK_BEGINNING, 0, 0,NULL);
if(oidSeek == NULL)
{
// error, return error
DWORD err = GetLastError();
CString sErr=_T("");
sErr.Format(TEXT("Erreur CeSeekDatabaseEx : %d"),err);
MessageBox(GetForegroundWi ndow(),sEr r,TEXT("Re adRecord") ,MB_ICONER ROR);
}
CEOID ret = CeSeekDatabaseEx(m_CEDB,CE DB_SEEK_VA LUEFIRSTEQ UAL,(DWORD )&look,1,& cByte);
if (ret != 0 )
{
MessageBox(GetForegroundWi ndow(),TEX T("Un enregistrement Trouve"),_T("ReadRecord"), MB_ICONINF ORMATION);
}
else
{
DWORD err = GetLastError();
CString sErr=_T("");
sErr.Format(TEXT("Erreur CeSeekDatabaseEx : %d"),err);
MessageBox(GetForegroundWi ndow(),sEr r,TEXT("Re adRecord") ,MB_ICONER ROR);
}
CloseHandle(m_CEDB);
}
The first instruction CEOID oidSeek = CeSeekDatabaseEx(m_CEDB, CEDB_SEEK_BEGINNING, 0, 0,NULL); seems to work because oidSeek is not null.
The second one CEOID ret = CeSeekDatabaseEx(m_CEDB,CE DB_SEEK_VA LUEFIRSTEQ UAL,(DWORD )&look,1,& cByte); does not work. The record i'am looking for is in the database for sure :) i inserted it at least one time.
The error code i get is 25 this seems to be SEEK_ERROR ...
So can some one told me where i get wrong please ? I'm lost :)
Thanks for your help
I'm trying to search for a recond in a Windows CE database. : I do the falowing code :
This for the creation of the database
#define RF_TAG 0
#define RF_DESC 1
#define PL_RFID (MAKELONG(CEVT_LPWSTR,RF_T
#define PL_DESC (MAKELONG(CEVT_LPWSTR,RF_D
CEDBASEINFO dbInfo;
memset (&dbInfo, 0, sizeof(dbInfo));
wcscpy (dbInfo.szDbaseName , TEXT("RfIdTag"));
dbInfo.dwFlags = CEDB_VALIDNAME ;
dbInfo.wNumSortOrder = 2;
dbInfo.rgSortSpecs[0].prop
dbInfo.rgSortSpecs[0].dwFl
dbInfo.rgSortSpecs[1].prop
dbInfo.rgSortSpecs[1].dwFl
dbInfo.dwDbaseType=0;
CeMountDBVol(guid,TEXT("\\
dbx = CeCreateDatabaseEx(guid, &dbInfo);
This part of code is working (there no error while running) becase the database is realy created.
Once the data base is created I insert a lot of records (this works to) the size of the database file is increasing:
CEPROPVAL myRec[2];
TCHAR * pRfTag = (TCHAR *) rfTag.GetString();
TCHAR * pRfDesc = (TCHAR *) rfDesc.GetString();
myRec[RF_TAG].propid = PL_RFID;
myRec[RF_TAG].val.lpwstr = pRfTag;
myRec[RF_DESC].propid = PL_DESC;
myRec[RF_DESC].val.lpwstr = pRfDesc;
CEOID rs = CeWriteRecordProps(m_CEDB,
My problem is when i try to find a record using CeSeekDataBaseEx.
WORD cProps = 1;
//LPByte pBuff = NULL;
DWORD cByte = 0;
CEPROPVAL look;
USES_CONVERSION;
look.propid = PL_RFID;
look.val.lpwstr = T2W(lpszItem);
look.wFlags = 0;
look.wLenData = 0;
m_CEDB= OpenDataBase(_T("rfidDB.db
if (m_CEDB != INVALID_HANDLE_VALUE)
{
CEOID oidSeek = CeSeekDatabaseEx(m_CEDB, CEDB_SEEK_BEGINNING, 0, 0,NULL);
if(oidSeek == NULL)
{
// error, return error
DWORD err = GetLastError();
CString sErr=_T("");
sErr.Format(TEXT("Erreur CeSeekDatabaseEx : %d"),err);
MessageBox(GetForegroundWi
}
CEOID ret = CeSeekDatabaseEx(m_CEDB,CE
if (ret != 0 )
{
MessageBox(GetForegroundWi
}
else
{
DWORD err = GetLastError();
CString sErr=_T("");
sErr.Format(TEXT("Erreur CeSeekDatabaseEx : %d"),err);
MessageBox(GetForegroundWi
}
CloseHandle(m_CEDB);
}
The first instruction CEOID oidSeek = CeSeekDatabaseEx(m_CEDB, CEDB_SEEK_BEGINNING, 0, 0,NULL); seems to work because oidSeek is not null.
The second one CEOID ret = CeSeekDatabaseEx(m_CEDB,CE
The error code i get is 25 this seems to be SEEK_ERROR ...
So can some one told me where i get wrong please ? I'm lost :)
Thanks for your help
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.