crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Отображение таблицы данных, выбранных из БД
AD
  опции профиля:
сообщение 10.10.2008, 14:31
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Никак не могу взять в толк, что делаю не так в этом коде:
int currentIndex = cmbSelectTable -> currentIndex();    // QComboBox
QString specTable = cmbSelectTable -> itemText(currentIndex);
modelTable -> setTable(specTable);          // QSqlTableModel
modelTable -> setSort(0, Qt::AscendingOrder);
modelTable -> setFilter("2 > 1");
bool sel = modelTable -> select();

tableView -> setModel(modelTable);          // QTableView
tableView -> setSelectionBehavior(QAbstractItemView::SelectRows);
tableView -> resizeColumnsToContents();

for(int row=0; row<modelTable -> rowCount(); ++row)
         tableView -> selectRow(row);

Нет никаких выбранных данных. Посмотрел в дебаге функция select() возвращает false
Где может быть ошибка, никак не пойму. Прочитал внимательно ассистент, установил и сортировку, и фильтр, все-равно не отображает выбранные данные.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 10.10.2008, 15:23
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Cамое интересное, что при написании такой конструкции:
QSqlQuery query;
query.exec("select * from Models where 2 > 1 order by modelID");
while(query.next())
{
    int id = query.value(0).toInt();
    string modelType = query.value(1).toString().toStdString();
    int k = 90;
}

- которая эквивалентна, по сути, предыдущей, я могу видеть нормальные значения id and modelType в дебаггере.

Сообщение отредактировал AD - 10.10.2008, 15:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.10.2008, 15:29
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9668
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


AD, попробуй в модели таблицу явно задать (Models) и убрать сортировку и фильтр, посмотри, что тогда select() вернёт
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 10.10.2008, 15:41
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата
AD, попробуй в модели таблицу явно задать (Models) и убрать сортировку и фильтр, посмотри, что тогда select() вернёт

Нет, это не помогает. Значение - false
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.10.2008, 15:51
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9668
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Добавь после строки:
modelTable -> setTable(specTable); // QSqlTableModel
такой код:
qDebug() << modelTable->database()->tables();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 10.10.2008, 15:59
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 10.10.2008, 16:51) *
Добавь после строки:
modelTable -> setTable(specTable); // QSqlTableModel
такой код:
qDebug() << modelTable->database()->tables();

Действительно, странно! Возвращает пустой список!!!! :unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.10.2008, 16:04
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9668
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Если у тебя разрешена консоль в проекте ты должен видеть результат соединения с БД, примерно так:
Цитата
QSqlDatabase(driver=""QODBC"", database=""ESTOP"", host="""", port=-1, user=""NNN"", open=true)
(это в моей программе)

А у тебя что в консоли?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 10.10.2008, 16:09
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Вот это шутки:
QSqlDatabase(invalid)
:huh:

Хотя в комбобоксе он выводит ВСЕ три таблицы из этой базы данных.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.10.2008, 16:11
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9668
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


ну тогда показывай как ты их получаешь и помещаешь в комбобокс.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 10.10.2008, 16:17
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


ВСЕ! Спасибо - разобрался. Я создавал модель, а потом только вызывал функцию подключения к БД!


А вообще пожелание троллям такое бы сделать, чтобы в конструкторе QSqlTableModel вместо такого:
QSqlTableModel ( QObject * parent = 0, QSqlDatabase db = QSqlDatabase() ) 

/// вместо db указатель бы на db


вот такое бы сделать:
QSqlTableModel ( QObject * parent = 0, QSqlDatabase *db = &QSqlDatabase() ) 

/// вместо db указатель бы на db


Хотя, я могу многого не понимать и поэтому так рассуждаю. Если что, поправьте, пожалуйста!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.1.2022, 3:56