crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QSQLQuery + SP MSSQL
Гость_guest_*
сообщение 30.4.2013, 8:54
Сообщение #1





Гости








    


Всем привет! Не получается заюзать ХП для INSERT в базу. ХП SELECT работает норм. Возвращает результат. ХП рабочая, проверено.
lasterror возвращает QODBCResult::exec: Unable to execute statement: "[Microsoft][ODBC SQL Server Driver]Подключение занято до получения результатов для другого hstmt"

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 30.4.2013, 9:07
Сообщение #2





Гости








    


А, еще вопросик. Как результат SELECT запроса отобразить в QListView? Пробую так, не получается.

m_model = new QSqlQueryModel(this);
m_model->setHeaderData(0, Qt::Horizontal, QObject::tr("Наименование"));
m_model->setQuery(sqlStoredExecute(m_database, "ReadAllPosition", QMap<QString, QVariant>(map)));

listViewDictionaty->setModel(m_model);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 30.4.2013, 10:17
Сообщение #3





Гости








    


Первый вопрос решен. Подскажите по второму пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 30.4.2013, 12:09
Сообщение #4


Старейший участник
****

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

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




Репутация:   8  


sqlStoredExecute(m_database, "ReadAllPosition", QMap<QString, QVariant>(map));

Возвращает QSqlQuery или QString?
Если QSqlQuery, то
Цитата
Note that the query must be active and must not be isForwardOnly().

т.е.
Цитата
An active QSqlQuery is one that has been exec()'d successfully but not yet finished with. When you are finished with an active query, you can make make the query inactive by calling finish() or clear(), or you can delete the QSqlQuery instance.


Сообщение отредактировал lanz - 30.4.2013, 12:11
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 30.4.2013, 13:17
Сообщение #5





Гости








    


Возвращает QSqlQuery. isForwardOnly(false) не используется.
Не работает все равно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 30.4.2013, 13:25
Сообщение #6


Старейший участник
****

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

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




Репутация:   8  


Ну про форвард это на всякий случай, основное, то что
Цитата
Note that the query must be active

Т.е. внутри функции sqlStoredExecute должно выполнятся QSqlQuery::exec у возвращаемого query.

Попробуйте вставить просто операторы sql как строку в вызов setQuery.

Сообщение отредактировал lanz - 30.4.2013, 13:26
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 30.4.2013, 13:58
Сообщение #7





Гости








    


Цитата
Попробуйте вставить просто операторы sql как строку в вызов setQuery.

Так работает, норма. А через ХП нет. Я пробегаюсь по QsqlQuery

while(query.next()){
QMessageBox::information ....
}

Все норма, query содержит все записи таблицы, а на вьюху не выводит.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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