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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: ASSERT: "idx >= 0 && idx < s" in file ..\..\include/QtCore/../../src/corelib/too  (Прочитано 6217 раз)
chu
Гость
« : Февраль 14, 2011, 12:59 »

Код:
ASSERT: "idx >= 0 && idx < s" in file ..\..\include/QtCore/../../src/corelib/tools/qvarlengtharray.h, line 107
ошибка при попытке выполнении setData
Код:
int row = sqlModel->rowCount();
    sqlModel->insertRow(row);
    qDebug()<<row;
    sqlModel->setData(sqlModel->index(row, 1), "qweqwer");
в БД несколько таблиц, функция вставки работала для всех, добавил в БД ещё одну таблицу...
и замучался искать что с ней не так Злой данные не отображаются, setData не работает...
проьовал c mySQL и MS SQL Server - без результатов.
Код:
MyForm::MyForm(QWidget *parent)
    :QDialog(parent)
{
    setWindowFlags(Qt::Window);

    sqlModel = new QSqlTableModel;
    sqlModel->setTable("check");
    sqlModel->setSort(Check_Id, Qt::AscendingOrder);
    sqlModel->setEditStrategy(QSqlTableModel::OnFieldChange);
    sqlModel->select();

    qDebug()<<checkModel->tableName();
    qDebug()<<checkModel->index(1,1).data().toString();

    sqlTableView = new QTableView;
    sqlTableView->setModel(sqlModel);
    sqlTableView->setColumnHidden(Check_Id, true);
    sqlTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
    sqlTableView->resizeColumnsToContents();

    QGridLayout *lay = new QGridLayout;
    lay->addWidget(checkTableView, 0, 0, 4, 1);
    ...
    setLayout(lay);

    resize (1024, 640);
}
подставляя любую другую таблицу в setTable все ОК.
что может быть не так с этой таблицей?! (работаю под root / sa)
« Последнее редактирование: Февраль 14, 2011, 13:01 от chu » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 14, 2011, 13:05 »

Привел бы скрипт создания таблицы, что ли.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
chu
Гость
« Ответ #2 : Февраль 14, 2011, 13:10 »

создавал в MS SQL Server Managment Studio
стандартно: БД - таблицы - new table - заполнил несколько полей.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Февраль 14, 2011, 13:25 »

Я просил что-то типа:
"CREATE table some_table (id INTEGER, ....."
Т.е. чтобы можно было увидеть какие поля, какие зависимости и пр.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
chu
Гость
« Ответ #4 : Февраль 14, 2011, 13:25 »

Неожиданно решил проблему  Веселый
все дело в имени таблицы: "check"
изменил имя - все заработало!
не знал что существуют "некорректные/нежелательные" имена для таблиц
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Февраль 14, 2011, 13:26 »

Гы. Есть зарезервированные слова. Обычно если используешь зарезервированное слово, то на оно обрамляется кавычками. т.е. название твой таблицы было не check, а "check".
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
chu
Гость
« Ответ #6 : Февраль 14, 2011, 13:35 »

Гы. Есть зарезервированные слова. Обычно если используешь зарезервированное слово, то на оно обрамляется кавычками. т.е. название твой таблицы было не check, а "check".
Спасибо за инфу! Улыбающийся
эх... знал бы я это вчера, когда весь вечер перекапывал прогу и настройки sql
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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