Russian Qt Forum

Qt => Базы данных => Тема начата: ole от Ноябрь 26, 2008, 11:54



Название: ms access - как считать ячейки с русскими буквами ?
Отправлено: ole от Ноябрь 26, 2008, 11:54
под winXP пишу приложение соединяющееся с MS Access 2003 (.mdb) файлом.
Создаю QSqlQuery - строки на английском извлекаются нормально , а вместо строк на русском выдаются числа. 

Можно ли что-то сделать,  кроме как перевести все ячейки в БД  ?


Название: Re: ms access - как считать ячейки с русскими буквами ?
Отправлено: spirit от Ноябрь 26, 2008, 12:00
попробуйте задать кодек
Код
C++ (Qt)
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("cp-1251"));
 


Название: Re: ms access - как считать ячейки с русскими буквами ?
Отправлено: ole от Ноябрь 26, 2008, 12:36
спасибо, но не помогает...

+ пробовал

QString name = query.value(0).toString();
QTextCodec *codec = QTextCodec::codecForName("cp-1251");
QByteArrey encodedString = codec->fromUnicod(name);

cout << encodedString.constData() ;  + вывод в ComboBOx

Может ли сам QSqlQuery получать от ODBC драйвера ахинею, и тогда QT ничем не поможет или всетки дело в QT?


Название: Re: ms access - как считать ячейки с русскими буквами ?
Отправлено: spirit от Ноябрь 26, 2008, 12:39
попробуйте выполнить запрос в QTDIR/demos/sqlbrowser как там будут символы отображаться.


Название: Re: ms access - как считать ячейки с русскими буквами ?
Отправлено: ole от Ноябрь 26, 2008, 13:03
QT SQL Browser  также вместо русских строк показывает числа ( от 1 до 16  такое ощущение что  из всех строк взяты только  РАЗЛИЧНЫЕ строки на русском, пронумерованы и эти номера и выданы)



Название: Re: ms access - как считать ячейки с русскими буквами ?
Отправлено: spirit от Ноябрь 26, 2008, 13:04
тогда может дело в запросе?


Название: Re: ms access - как считать ячейки с русскими буквами ?
Отправлено: ole от Ноябрь 26, 2008, 13:37
Спасибо за помощь кажется я начинаю понимать...    теперь все должно получиться!

Чтобы закрыть тему и больше никого не вводить в заблуждение опишу ситуацию

в БД две таблицы States(Nomer, State) и companies(name,Sstate)   со связью по полю state .
(Столбец state содержит строки полностью на русском или английском.)

по запросу SELECT * FROM companies  в столбце State  в некоторых строках появляются значения  из столбца  Nomer однозначно соответствующего значению в столбце  state из таблицы states.

Вывод:  - написать более сложный запрос       
              - с отображением русского все впорядке 



Название: Re: ms access - как считать ячейки с русскими буквами ?
Отправлено: spirit от Ноябрь 26, 2008, 13:41
ну тут по идее можно объединением обойтись и все будет ок.  :)