Здравствуйте, гость ( Вход | Регистрация )
Max Payne | Дата 16.2.2012, 16:00 |
У меня такая же проблема , только список таблиц возвращается знаками вопросов, помогите кто решил проблему. Я подключаюсь к *.mdb созданой в Aссess 2003. | |
PAFOS | Дата 24.6.2011, 8:01 |
Под дампом QString я имел ввиду содержание ее, т.е. массив unsigned char*. По этому массиву возможно понять какая кодировка. Еще момент, хотя, я думаю, он не особо тут уместен - может быть несовместимый порядок байтов. Например у тебя прога работает с Big Endian, а драйвер возвращает тебе Little Endian. Такой подводный камень типичный для сетевых приложений, но чем мелкософт не шутит?) |
|
haiflive | Дата 18.6.2011, 11:22 |
У меня ОС х32 забыл сказать.. Открыл одну таблицу, у которой название на латинице.. и там всё нормально 0о все русские буквы в полном порядке.. Подправил кодек для строк
и нормально подключился к таблице с русским названием.. и полный код:
Почему-то db.tables() возвращает битые названия таблиц.. что же воспримем это как баг.. Чудеса.. Это именно тот случай, кода думаешь во вред себе.. Всем спасибо за ответы. |
|
DenisKh001 | Дата 17.6.2011, 17:05 |
У меня лежит вот здесь: C:\Windows\SysWOW64\odbcad32.exe. Проверил, подключился к *.accdb и все работает. #include <QApplication> #include <QTableView> #include <QSqlTableModel> int main(int argc, char *argv[]) { QApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("TestMDB"); db.open(); QSqlTableModel model; model.setTable("town"); model.select(); QTableView *view1 = new QTableView; view1->setModel(&model); view1->show(); return a.exec(); } |
|
haiflive | Дата 17.6.2011, 15:46 |
Угу, уже подумывал конвертировать базу в mdb, и подключиться через другую строку коннекта.. Меня больше интересует вопрос, не будет ли проблем с кодировкой, когда я подключусь в *.xsl (MS Excel), драйвер-то тот же.. Очень признателен за ответ.. жду пояснения. |
|
DenisKh001 | Дата 16.6.2011, 20:05 |
К *.accdb не подключался, но подключался к *.mdb. И особенность в том, что в win7 подключался не через 64х ODBC (а именно он в включается в администрировании), а через 32х ODBC который запрятан в папках windows. Завтра напишу точный путь где лежит. Может поможет. | |
haiflive | Дата 11.6.2011, 10:56 |
Ппц, весь гугл облазил.. теперь когда ищу постонно вылазиет эта тема, помогите пож.. будь он не ладен это мелкософт.. Странно, но ошибки ODBC, например ошибка коннекта, возвращает нормальным текстом, а вот данные нет..( может там можно как-то изменить кодировку файла?. Я бы с удовольствием конвертировал базу в другой формат, но в будующем нужно будет работать с xsl(Excel) файлами, драйвер тот же.. Может есть какие-то альтернативные драйверы?. Open office как-то открывает же эти файлы.. или это промо программа от мелкософта?. |
|
haiflive | Дата 10.6.2011, 9:25 |
вот собственно переписал прогармму
вывод, хотя думаю он испортится:
когда сменил кодировку приложения с UTF8 на cp1251 с помошью строки QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8")); то получил что "Текст," превратился в похожий набор символов, если указать cp1251 то солов "Текст," отображатеся нормально. Дамп QString это как?. В приложении кусок базы |
|
PAFOS | Дата 10.6.2011, 7:54 |
Если ты в строке подключения указал UTF-8 то будь добр установи кодек в своей проге тоже на UTF-8 codecForCStrings. Если не поможет - покажи дамп QString, который возвращается, чтобы определись UTF16 это или UTF-8 или cp1251) Так же может быть момент, что порядок байтов не совпадает (но это уже последний случай) |
|
Litkevich Yuriy | Дата 10.6.2011, 6:44 |
может я не правильно делаю, но такой вариант выдаёт ошибку, как безопасно преобразовать в тип char* Я не понял, что ты хотел сделать.QString::fromLocal8Bit( db.tables().at(i) ) |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 27.6.2024, 21:16 |