crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> SQL Модели
defnull
  опции профиля:
сообщение 20.4.2009, 1:23
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 1.5.2008
Пользователь №: 165

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




Репутация:   1  


Что-то я слегка не понимаю sql модели. Как установить с каким соединением к бд работать понятно, но совершенно не ясно как получать ошибки?? например о том что разорванно соединение с базой данных? Сигналов я что-то не нашёл подходящих(( Могу ли я на лету изменять setQuery (например критерии поиска спользуются ) ? И самое интересное.. можно ли сделать так чтобы TableView работал в одном потоке а sql модель в другом?

Сообщение отредактировал defnull - 20.4.2009, 1:26
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.4.2009, 1:36
Сообщение #2


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

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

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




Репутация:   94  


Цитата(defnull @ 20.4.2009, 5:23) *
но совершенно не ясно как получать ошибки??
см. методы модели, там есть.
Я так делаю:
    reportmodel->setQuery(qstr, db);
    qerr = reportmodel->lastError().text();
        qDebug() << "P_HORLYPWR_OFMONTH " << qerr;
или
    model->setTable(tableName);
    if (model->lastError().type() != QSqlError::NoError)
    {
        QMessageBox::critical(0, tr("Ошибка"),
                                    tr("Невозможно получить доступ к таблице ")
                                    + "\"" + tableName + "\""
                                    +tr("\n\rПричина: ")
                                    +(model->lastError().databaseText()),
                                    QMessageBox::Cancel);
    }
в зависимоти от типа модели

Цитата(defnull @ 20.4.2009, 5:23) *
И самое интересное.. можно ли сделать так чтобы TableView работал в одном потоке а sql модель в другом?
ты же создавал сходную тему, только класс другой ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
defnull
  опции профиля:
сообщение 20.4.2009, 1:51
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 49
Регистрация: 1.5.2008
Пользователь №: 165

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




Репутация:   1  


Гм вероятно я не совсем понял. Мне надо обновлять таблицу например по кнопке на предмет новых данных в базе. Получается мне каждый раз надо вызывать слот который заново выставляет setQuery? И именно там и проверять на ошибки?
(по поводу размещение модели в потоке как я понимаю утвердительный ответ?)), тоесть работать будет нормально?)

з.ы. на соседней теме я слегка застрял да и мысли перетекли слегка в другое русло.)) Если интересно то я упёрся в проблему такого характера.
Есть класс A и Z которые оба создаются в main(). Z - наследует Qthread и в теле run() выделяется память для класса D указатель которого храниться в Z. Проблема соединить сигнал класса A с слотом класса D. Так как мы не можем гарантировать что D уже создался к тому времени как мы соединяем их с A в секции main() (вроде бы из=за этого мне компилятор и выдавал ошибку.. хотя тип соединения был QuuedCOnnection который вообще доджен черех exec передавать)

з.з.ы пока писал пришла идея высылать сигнал из секции run класса Z когда там всё создасться...
сорри за офтоп

Сообщение отредактировал defnull - 20.4.2009, 1:54
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.4.2009, 1:57
Сообщение #4


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

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

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




Репутация:   94  


Цитата(defnull @ 20.4.2009, 5:51) *
который заново выставляет setQuery? И именно там и проверять на ошибки?
совершенно верно

Цитата(Litkevich Yuriy @ 20.4.2009, 5:54) *
по поводу размещение модели в потоке как я понимаю утвердительный ответ?)), тоесть работать будет нормально?)
посмотри тут ты увидишь, что интерисующие тебя вещи находятся в модуле SQL.
А в доп потоках НЕЛЬЗЯ создавть только те классы, которые находятся в модуле QtGui, т.е. представления.

Цитата(defnull @ 20.4.2009, 5:51) *
Есть класс A и Z которые оба созда...
Давай придерживатся правила: "Одна проблема - одна тема"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.11.2022, 21:20