Russian Qt Forum
Ноябрь 27, 2024, 05:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt 4.1.4 QIBASE выводит не все записи в таблицах  (Прочитано 3789 раз)
brontoz
Гость
« : Сентябрь 25, 2006, 13:14 »

Т.е. в некотрых таблицах выводит всё, в других обрезает и выводит половину таблицы, а некоторые таблицы совсем не выводит. Ругается на деление на ноль или ошибку преобразования.
Естественно все данные на русском.
Проводил эксперимент, допустим таблица отображает 15 строк. Беру 16-ю и весь текст единственного строкового поля добавляю в 15-ю запись. Отрабатываю запрос, отображает 14 строк, модифицированная строка пропадает. Последовательно урезаю модифицированную 15-строку и добиваюсь того чтоб она выводилась. Нахожу, что если длина текстового поля допустим 40, то всё нормально, а затем если добавляю ещё любой другой символ (русский), строка уже не выводится.

В тексте самого драйвера имеется печально знаменитая строка:

static const char enc[8] = "UTF_FSS";

Которую я пытался заменить на WIN1251, не помогло. В режиме DEBUG под MS VС сбоит и ругаецца на фонт, а в Release выводит всё, но вместо букв выводит разряженные квадратики.

Что с этим делать?

Кстати ещё правил текст драйвера:
    //sqlda->version = SQLDA_VERSION1;  /// Было
    sqlda->version = SQLDA_CURRENT_VERSION; /// Стало

Тоже был какой-то косяк пока не исправил

Под это дело даже проабгрейдил IB c 7.1 до 7.5.1, не помогло  :cry:

добавлено спустя 3 часа 4 минуты:

 Проблему пока решил так: Обычно БД создавал с опцией
DEFAULT CHARACTER SET WIN1251
Попробовал вместо WIN1251 вставить UNICODE_FSS и таблицы стали отображать все записи. Это конечно хорошо, но не слишком корректно, м.б.кто сталкивался?
Записан
Alex03
Гость
« Ответ #1 : Сентябрь 26, 2006, 06:08 »

Сталкивался когдато с аналогичной провлемой с FB1.5.
Я сейчас точно не скажу, но там проблемы с длинами.
Что-то типа того:
Qt спрашивает у БД размер строки в байтах, а далее пытается в эти байты запихать utf-8 строку (даже наверное не qt а клиентская либа с подачи qt).
поэтому с ascii и короткими не ascii строками всё нормально, а с длинными облом.

Мож я чего и наврал - звиняйте! Улыбающийся
Записан
Tonal
Гость
« Ответ #2 : Сентябрь 26, 2006, 10:42 »

У нас, на FB1.5 и FB 2 таких проблем нет.

Да, и макроса SQLDA_CURRENT_VERSION тоже нет. ;-)
Что-то там багланд подшаманил в api IB7 похоже...
Записан
Alexandr Az
Гость
« Ответ #3 : Октябрь 02, 2006, 09:00 »

Да трабла в кодировке всё. Всё в кодировке. Win1251 наверное база и UTF токи умеет конектится куте. Тут не поборешь - это глюк самого fb. Возьми IBExpertом проделай такую же ситуацию, предварительно поставив там кодировку UTF-8. Даже если сделать базу в UTF-8, глюков все равно будет хватать. Во первых забудь про регистронезависимый поиск, а во вторых UDF. Возвращает он в некоторых случаях строки максимальной длины, а они как известно в юникоде должны в 2 раза меньше быть. Выход один - переписать дрова куте - сдалать поддержку win1251. Не боись, там пару строчек заменить Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.15 секунд. Запросов: 21.