|
|
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. У меня такая проблема. Мне нужно получить данные из поля МЕМО базы данных, но при этом проект должне поддерживать Unicode. При включенной поддержке Юникод, данные я могу без проблем получать через RFX_Text(). Они отображаются правильно и никаких проблем нет, но при использовании функции GetFieldValue, возвникают проблемы не только с полем МЕМО, но и просто с текстовыми полями. Как я ее только не использовал и просто брал из нее строку и через тип CDBVatiant, все равно он выдает вместо текста квадратики. Кто знает, помогите пожалуйста. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 11:43 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
Пожалуйста, приводи(те) образцы кода, в данном случае — вызов GetFieldValue. Честно скажу, сам с этой проблемой не сталкивался. Но есть предложение — указать третьим параметром в GetFieldValue SQL_C_WCHAR (оно описано в SQLUCODE.H). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 13:24 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
Так в том то и дело. Все варианты вызова функции попробовал. Пробовал указывать SQL_C_WCHAR, но он при этом ругается и даже ничего не говорит, а выводит пустое окно со стилем ошибки и раздается сигнал ошибки. Не ругается когда пишу SQL_C_CHAR, но тогда опять получаются квадратики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 13:46 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
Вот видите, был бы в первом посте образец вызова с SQL_C_WCHAR, я бы не писал бесполезный ответ. он при этом ругается и даже ничего не говорит, а выводит пустое окно со стилем ошибки Где, трам-тарарам, скриншот сообщения? А тот вариант, где CString, а не CDBVariant, пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 13:53 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
И этот вариант пробовал. С полем Мемо дает то же окно. Скриншот прикреплен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 14:33 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
Гм... 1. Предлагаю пройтись с отладчиком по CRecordset::GetFieldValue. Там в явном виде упоминается _UNICODE, посмотрите, заходит ли оно с соответствующий кусок. И на какой строчке выдаётся сообщение об ошибке. 2. Какая версия Visual C++ и какой сервис пак установлен? 3. Какая у вас СУБД и какого типа поле? 4. Нельзя ли обойтись RFX_Text-ом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 14:58 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
Я с удовольствием обойдусь RFX_Text, если только можно будет получать данные через функцию, указав имя поля или же его индекс. Чтобы не хранить значения в переменных. Использую MS ACCESS, в качестве базы данных. Продалал пассы с отладчиком он вывел меня на следующий код CATCH_ALL(e) { lResult = AfxProcessWndProcException(e, &pThreadState->m_lastSentMsg); TRACE(traceAppMsg, 0, "Warning: Uncaught exception in WindowProc (returning %ld).\n", lResult); DELETE_EXCEPTION(e); } END_CATCH_ALL в файле wiccore.cpp А версия у меня такая: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 15:41 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
А, так у вас VC 7... 1. Текст с CATCH_ALL интереса не представляет, это просто место, где обрабатываются exceptions. Надо _зайти_ (F11) в CRecordset::GetFieldValue и протыкать её, чтобы выяснить, какая строчка последняя перед exception. Если в этой строчке стоит функция, в которую можно зайти, то надо перезапуститься и зайти. В седьмом С++ в CRecordset::GetFieldValue _UNICODE явно не упоминается... 2. Что значит "Чтобы не хранить значения в переменных"? Откуда такая ненависть к переменным? 3. На всякий случай — если нужно получить снимок диалогового окна, то проще всего нажать Alt+Print Screen. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 12:39 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
А какой нужен С++ для того, чтобы Юникод упоминался? А это не нелюбовь, а просто не хочу, чтобы объекты были очень большими, их у меня может быть много, вот и хочу динамически получать эти данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 13:59 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
Посмотрел через F11 и пришел к выводу, что он не знает значение типа. В переменной, где хранится типSQL значение -10, а насколько я знаю, такого тип нет, вот он и выдает общее исключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 14:11 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
А какой нужен С++ для того, чтобы Юникод упоминался? Никакой не нужен, просто я исследовал текст для VC6. А это не нелюбовь, а просто не хочу, чтобы объекты были очень большими, их у меня может быть много, вот и хочу динамически получать эти данные. Мне кажется, это надуманная проблема. Каждый CRecordset в отдельный момент времени будет хранить в переменной значение конкретного поля только из текущей записи. Получится ровно столько же памяти, что и при GetFieldValue. В переменной, где хранится типSQL значение -10, а насколько я знаю, такого тип нет, вот он и выдает общее исключение. Откуда это вы знаете? Цитирую sqlucode.h: #define SQL_WLONGVARCHAR (-10) Хуже то, что оно этот тип просто не обрабатывает: Код: plaintext 1. 2. 3. 4. 5. 6. Я нашёл, друзья, нашёл! (с) Зато есть функция GetFieldValue Ex , которая этот тип знает! Пробуй(те)! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 14:40 |
|
||
|
Проблема Unicode и Типа CDBVariant
|
|||
|---|---|---|---|
|
#18+
В том то и дело, что при использовании этой функции компилятор ругается c:\Documents and Settings\PIP\My Documents\Visual Studio Projects\TestCRecordSet\TestCRecordSetDlg.cpp(286): error C2248: 'CRecordset::GetFieldValueEx' : cannot access private member declared in class 'CRecordset' И никак не хочет компилироваться. Может я совсем чайник и ее нужно использовать по другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 15:42 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33306715&tid=2032680]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
95ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 472ms |

| 0 / 0 |
