Всем привет!
Наткнулся на проблему:
Есть база Access (ее изменять нельзя), к примеру в ней таблица 'Customers' и поле 'Name', поле текстовое, соответственно Access держит его в Unicod'е, а размер поля равен 50 символов. При чтении данных из таблицы посредством OLE DB я получаю 50 байт вместо 50 символов и теряю половину данных

. При этом все прекрасно работает на VC++ 7, но в 6-й версии — проблемы. Кто-нибудь знает как от этого избавиться????
Примерный код:
CDBPropSet pDBinit(DBPROPSET_DBINIT);
pDBinit.AddProperty(DBPROP_INIT_DATASOURCE, "C:\\customers.mdb");
CDataSource pDataSource;
pDataSource.Open("MS Jet.....", &pDBinit);
CSession pSession;
pSession.Open(pDataSource);
CCommand<CDynamicAccessor> pCmd;
pCmd.Open(pSession, "SELECT * FROM customers");
CString sString = (LPCWSTR)pCmd.GetValue("Name");
С уважением, Артем....
Здравствуйте Artem_S, Вы писали:
AS>Всем привет!
AS>Наткнулся на проблему:
AS>Есть база Access (ее изменять нельзя), к примеру в ней таблица 'Customers' и поле 'Name', поле текстовое, соответственно Access держит его в Unicod'е, а размер поля равен 50 символов. При чтении данных из таблицы посредством OLE DB я получаю 50 байт вместо 50 символов и теряю половину данных
. При этом все прекрасно работает на VC++ 7, но в 6-й версии — проблемы. Кто-нибудь знает как от этого избавиться????
MSDN намекает на специальную обработку типа TCHAR при извлечении его в CDynamicAccessor::GetValue(...)
Здравствуйте The Lex, Вы писали:
TL>Здравствуйте Artem_S, Вы писали:
AS>>Всем привет!
AS>>Наткнулся на проблему:
AS>>Есть база Access (ее изменять нельзя), к примеру в ней таблица 'Customers' и поле 'Name', поле текстовое, соответственно Access держит его в Unicod'е, а размер поля равен 50 символов. При чтении данных из таблицы посредством OLE DB я получаю 50 байт вместо 50 символов и теряю половину данных
. При этом все прекрасно работает на VC++ 7, но в 6-й версии — проблемы. Кто-нибудь знает как от этого избавиться????
TL>MSDN намекает на специальную обработку типа TCHAR при извлечении его в CDynamicAccessor::GetValue(...)
А можно поподробнее? Все что нашел я в MSDN — это описание типа DBTYPE_WSTR и предписание использовать wchar_t, но толку от этого никакого...