|
Hi experts,
I need to open the .cdb with sort order in API call, but I found that the .cdb converted from .mdb has no sort order, how can I define it in the Access .mdb and would it be lost after the convertion to .cdb?
thanks a lot.
|
|
|
|
|
Did you ty creating an index on the table with the required sort order?
Regards,
João Paulo
|
|
|
|
|
Thanks for your reply.
You're right!
The code is fine if I created the DB insided the PPC with
the sort order, but it fail when I created the database
from Access (officeXP version), and converted to .cdb
while copying it to the device.
The database has only 3 columns in it:
BookID(char 8), Content (char 90), Notes (char 255)
Actually I've defined BookID as the unique key index, so
how can I define the sort order for it?
Even if I type "BookID ASC" in the property page of the
Access' db, I get the same result.
Is it the ActiveSync's bug that lost the sort order? or
where else I shuld define the sort order?
If no solution for it, could you suggess any web-site teaching how to install and use SQL CE? expecially how to pack the whole thing including the SQL CE and install together for my client's PPC2002?
Please help!
|
|
|
|
|
I usually have no such problems, but I'm using either ADOCE or OLE DB. How are you accessing the database?
Regards,
João Paulo
|
|
|
|
|
well, I'm using API in eVC:
g_hDB = CeOpenDatabaseEx (&g_guidDB, &g_oidDB, _T("book"),
0, /* <- default sort order*/ 0, NULL);
I must use "0" for the sort-order since it get an open error if I specify any other value.
please advices, thanks.
|
|
|
|
|
The native db API is not really my speciality. But if you want to take a look at ADOCE, check this:
A set of ADOCE classes[^]
Regards,
João Paulo
|
|
|
|
|
I will try it, thanks for helping !
|
|
|
|
|
When we touch the screen in a second, ppc will occur a ring which forms some red circles.Does anyone know how to cancel this status ?
Thanks
|
|
|
|
|
|
Well, I feel pretty stupid. I've been trying for a week to get evc3 installed, and it just isn't working. Nobody here at works remembers what we had to do to get it instaled either.
I tried installing from just the evc3 CDs, and even after picking ARM and x86 emulation as the desired platorms, not only do I not get the x86 platforms, but I also don't get PocketPC 2002 (just PocketPC).
I've also tried starting from the CE3 Platform Builder "stack-o-discs", but with the same result. What the hell am I doing wrong?
------- signature starts
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
"You won't like me when I'm angry..." - Dr. Bruce Banner
Please review the Legal Disclaimer in my bio.
------- signature ends
|
|
|
|
|
|
sorry guys i m a newbie but i really desperately need help for a project.. i will need to come up with a video phone application and i was wondering if i can do that with c#? and how do i even get started??
by examining the open source codecs? or streaming protocols.
it is my first major project and any advice will really be greatly appreciated
|
|
|
|
|
I don't know whether the source code of DirectShow Application on PC could be migrated into the development environment of the WinCE.net, and could be rebuilt! so as to it could run on embeded device with WinCE.net. Do you help me?Thank you in advance!
Best Regards
Hailei
2003/11/13
|
|
|
|
|
I have two applications that I am working on. I want to be able to perform some routines in one application based on information from another app.
How can I or how do I go about sending messages between the two applications? Is it possible since I already know what the window class name is to obtain a handle to that window and then just post a message directly to it?
Thanks,
-Eric
|
|
|
|
|
VanHlebar wrote:
post a message directly to it?
Yes, you can do that. I suggest you use registered messages for that. Use the RegisterWindowMessage function to do that.
Regards,
João Paulo
|
|
|
|
|
Hello All
I am developing in Embedded Visual C++ for Pocket PC 2002. When I compile one Dll in X86 Debug or Release it works, but when I choose ARM (either Debug or Release) it doesn't work, and it appears the following message:
C:\Projects\project1\src\DllRTInteg\RT_Integ.cpp(36) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'D:\AtlasTools\utc61_rel\src\P2\arm\code.c', line 615)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Error executing clarm.exe.
But that file doesn't exists (even I don't have D: unit!!)
The compiler options for both configurations are quite similar, as shown here:
For WCE ARM Debug:
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "ARMDbg"
# PROP BASE Intermediate_Dir "ARMDbg"
# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\lib\ARMDbg"
# PROP Intermediate_Dir "..\obj\ARMDbg\DllRtInteg"
# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r
# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r
CPP=clarm.exe
# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_USRDLL" /D "DLLRTINTEG_EXPORTS" /YX /M$(CECrtMTDebug) /c
# ADD CPP /nologo /W3 /Zi /Od /I "..\CommonLibrary" /D "DEBUG" /D "ARM" /D "_ARM_" /D "_USRDLL" /D "_GEN_DLL_RT_INTEG_" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "ENGLISH" /M$(CECrtMTDebug) /GF /Bd /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 commctrl.lib coredll.lib /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
# ADD LINK32 commctrl.lib coredll.lib /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
and for WIN CE x86 Debug:
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "X86Dbg"
# PROP BASE Intermediate_Dir "X86Dbg"
# PROP BASE CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\lib\X86Dbg"
# PROP Intermediate_Dir "..\obj\X86Dbg\DllRtInteg"
# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}"
# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
RSC=rc.exe
# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "_X86_" /d "x86" /d "_i386_" /r
# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "_X86_" /d "x86" /d "_i386_" /r
CPP=cl.exe
# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "_i386_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_USRDLL" /D "DLLRTINTEG_EXPORTS" /YX /Gs8192 /GF /c
# ADD CPP /nologo /W3 /Zi /Od /I "..\CommonLibrary" /D "DEBUG" /D "_i386_" /D "_X86_" /D "x86" /D "_USRDLL" /D "_GEN_DLL_RT_INTEG_" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "ENGLISH" /Gs8192 /GF /c
MTL=midl.exe
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /subsystem:$(CESubsystem) /MACHINE:IX86
# ADD LINK32 commctrl.lib coredll.lib $(CEx86Corelibc) /nologo /base:"0x00100000" /stack:0x10000,0x1000 /entry:"_DllMainCRTStartup" /dll /debug /nodefaultlib:"OLDNAMES.lib" /nodefaultlib:$(CENoDefaultLib) /libpath:"..\Lib\X86Dbg" /subsystem:$(CESubsystem) /MACHINE:IX86
Any Idea?
Thaks in advance
|
|
|
|
|
Internal Compiler Error basically indicates that the compiler failed to read your source file(s) correctly and/or that some other unanticipated error occurred. The source file listed is the source file for the compiler and is for Microsoft's use.
Usually the first troubleshooting step is to try Rebuild All rather than just Build. If that fails, follow the Microsoft KB article PRB: C1001 Compiler Error Message - Suggestions for Troubleshooting[^]. For the ARM build, use clarm.exe (located at C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN) rather than cl.exe (which is the x86 compiler).
|
|
|
|
|
Thank you for your answer, but I can't solve the problem. Any ideas?
|
|
|
|
|
So what's the code on or around line 36 of RT_Integ.cpp? If it uses some of your own macros, it would help if you posted the definition of these as well.
I suggest trying to rewrite this line (or the surrounding code) in a different way. The ARM compiler front-end may be having a problem, perhaps with built-in limits, which the x86 compiler does not have. If the line has a lot of sub-expressions, try splitting it into more stages (it will also be easier to read!)
If that line seems completely normal, you could try the version of clarm from eVC 4.0. I suggest to start with that you try it on this one file from the command line: run C:\Program Files\Microsoft eMbedded C++ 4.0\EVC\WCE400\BIN\WCEARMV4.BAT to set up the environment appropriately.
Using the version 4 compiler (internal version number 12.20.9409 from eVC 4.0 RTM, 12.20.9615 for SP2) for CE 3.0 applications is not supported by Microsoft, but should work. You must take care that you don't use any unsupported features such as C++ exception handling or Run-Time Type Information.
It's been reported that the ARM compiler supplied with eVC 3 has problems with virtual base classes, but as I recall, this led to bad code generation rather than internal compiler errors.
|
|
|
|
|
Hello Mike
I finally wrote the line in a different way. In this line a function was called, but now I have erased that call and I have writen all that function code following the problematic line, and it works.
Thank you for your help.
|
|
|
|
|
Dear experts,
I cannot seek the DB after mounted and opened the DB, I think it needed to
set the sort order before seek but if I set it, the DB cannot be opened,
what's wrong in my code?
Following is the extract of my code in eVC3.0:
//====================begin====================
HANDLE g_hDB = 0; // Handle to database
CEOID g_oidDB = 0; // Object ID of the database
CEGUID g_guidDB; // Guid for database volume
DWORD dwIndex;
CEPROPVAL propSeek;
// Below is property for the sort order
const CEPROPID BookID = MAKELONG (CEVT_LPWSTR, 1);
// I can mount the .cdb successfully
CeMountDBVol(&g_guidDB, _T("\\test.cdb", OPEN_EXISTING);
// I can open the DB if no sort order
// but error to open if any sort order exist, why?
g_hDB = CeOpenDatabaseEx (&g_guidDB, &g_oidDB, _T("book"),
//BookID, //caused runtime error if use "BookID", so
I only can use the default '0' here:
0,
0, NULL);
//First seek to the start of the database, success for offset value.
//The bookID in the first record should be "00001111"
CeSeekDatabase(g_hDB, CEDB_SEEK_BEGINNING, 0, &dwIndex);
//Seek the record with passed-in parameter
//search value below, just a sample and this record does exist
propSeek.propid = BookID;
propSeek.val.lpwstr = _T("00005555");
//anyway, string value always cannot be seek, only offset success
g_oidDB = CeSeekDatabase(g_hDB, CEDB_SEEK_VALUEGREATER, (DWORD)&propSeek,
&dwIndex);
//then read the record, it done well
CEOID ceoidRec;
DWORD dwBuf;
CEPROPVAL *props = NULL;
unsigned short lProps;
ceoidRec = CeReadRecordPropsEx(hDB, CEDB_ALLOWREALLOC, &lProps, NULL,
(LPBYTE*)&props, &dwBuf, NULL);
//try to display the result
MessageBox (hWnd, props[0].val.lpwstr , _T("Message"), MB_OK);
//======================end====================
What do you think the result?
Right! it's "00001111", that means the first record, haven't seek?
I created the access ".mdb" file with sample records, field is "BookID" with
index that must be unique, from "00001111" to "00009999". And then I copy it
to my iPAQ3970 (I've also try with iPAQ3950 as well as the emulator with same
result), it converted to "test.cdb" (without synchronization).
I have try the VOConnection and VORecordset, it can seek by SQL but very slow
where my real database have 30 thousand records and besides the speed, very
strange that some records in the middle cannot be seek and read, (about the
15000'th to 20000'th records), I don't know whether it's memory problem but
my iPAQ still have very much main memory spaces.
How can I use the sort order and seek my record in API?
Thousand thanks!
Nick.
|
|
|
|
|
Does anyone happen to know either the message(s) that are sent when a theme is change on the ppc or where I can research this information? I am trying to look at msdn and pocketpcdn but am not having much luck.
Thanks,
-Eric
|
|
|
|
|
Ok, I found it.. WM_WININICHANGE is fired when the theme is changed.
-Eric
|
|
|
|
|
VanHlebar wrote:
WM_WININICHANGE is fired when the theme is changed
... and wParam = 0xF2 !
Regards,
João Paulo
|
|
|
|
|
João Paulo Figueira wrote:
... and wParam = 0xF2!
Regards,
João Paulo
That would be correct if I was making the change to the theme and wanted the os to update the screen. What I was looking for was how can my app tell that the os has just changed the today theme, maybe by another application or because the user when into settings->Today and changed it.
WM_WININICHANGE is fired, but it is also fired when the users add/deletes a today module. I have yet to figure out if the message was really sent because the theme was changed or something else.
The definition of the message handler that I found was OnWinIniChange(LPCTSTR lpszSection).
When I have put a break point in this handler lpszSection is always empty. For my purposes it really doesn't matter but it would be nice to not do anything in the function if the user only added a today item and not changed the theme.
-Eric
|
|
|
|
|