crossplatform.ru

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

> Вопросы по примеру staffmanager из книги Бланшет "Qt 4. Программирование GUI на C++"
Steklova Olga
  опции профиля:
сообщение 22.5.2013, 13:43
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 27.9.2011
Из: Санкт-Петербург
Пользователь №: 2912

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




Репутация:   4  


Добрый день :)
Запускаю пример staffmanager из главы 13 книги Бланшет "Qt 4. Программирование GUI на C++", изд.2.
Хочу добавить в БД новый Department и Employees для этого нового Department.
Нажимаю кнопку "Add Dept", в табл Departments появляется пустая строка, помеченная "*", ввожу данные в эту строку.
А дальше что делать? Или код этого примера не позволяет это сделать?

Добавлено 22.05.2013 16:50
При добавлении данных предполагаю, что результат добавления должен быть виден на экране и вноситься в БД.
А, запуская пример, я этого не вижу.
Или этот пример не дописан в книге в части редактирования таблицы Departments ?

Сообщение отредактировал Steklova Olga - 22.5.2013, 15:51
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Steklova Olga
  опции профиля:
сообщение 31.5.2013, 14:08
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 27.9.2011
Из: Санкт-Петербург
Пользователь №: 2912

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




Репутация:   4  


Цитата(Litkevich Yuriy @ 30.5.2013, 21:33) *
Там вроде ещё Tab также обрабатывается.
нет
Запустила пример, Tab не помогает при корректировки таблицы БД прямо в TableView.
Зато, при корректировке таблицы БД через QDataWidgetMapper помогает смена фокуса на другой контрол маппера с помощью Tab или курсора, а Enter в этом случае не подходит.

Цитата(Litkevich Yuriy @ 31.5.2013, 13:11) *
Ещё нюанс: при использовании Мапера становится невозможным использовать транзакции. Например, ты запускаешь транзакцию, пользователь взаимодействует с Мапером через виджеты, затем (по кнопке) фиксируешь трнзакцию. Фиксация при редактировании нескольких строк таблицы завершится неудачей. Т.к. в драйверах БД что-то идёт криво и ID транзакции используется неверный.
Почему вы говорите, что нельзя использовать транзакции? Может, я неверно поняла, что вы этим хотите сказать, о какой транзакции идет речь?
В примере chap18/db04 из книги Земскова "Qt4 на примерах" есть такой код:
void MyView::saveData(){
    MyModel *m = qobject_cast<MyModel *>(model());
    if ( ! m ) return;

    m->database().transaction();
    if (m->submitAll()) {
        m->database().commit();
    }else{
        m->database().rollback();
        QMessageBox::warning(this, tr("Error"),
                             tr("The database reported an error: %1")
                             .arg(m->lastError().text()));
        m->select();
    }
}
Тут есть транзакция.
Запускаю пример, редактирую одну запись таблицы БД в маппере, завершаю корректировку сменой фокуса с последнего откорректиррованного контрола на другой, затем аналогично редактирую другую запись, только после этого нажимаю кнопку "записать".
    QPushButton *btnSave = new QPushButton(tr("&Записать"));
    QObject::connect(btnSave, SIGNAL(clicked()), view, SLOT(saveData()));
И все срабатывает, все изменения обеих записей сохраняются в таблице БД. А вы о чем говорили?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Steklova Olga   Вопросы по примеру staffmanager из книги Бланшет "Qt 4. Программирование GUI на C++"   22.5.2013, 13:43
- - Steklova Olga   Вот код примера staffmanager из главы 13 книги Бла...   22.5.2013, 14:44
- - lanz   Вроде все в порядке. Как только фокус потеряется, ...   22.5.2013, 15:03
- - Steklova Olga   Отредактировала первое сообщение.   22.5.2013, 15:55
- - Steklova Olga   Цитата(lanz @ 22.5.2013, 15:03) Как тольк...   29.5.2013, 13:57
|- - Steklova Olga   Может, в примере где-нибудь пропущен этот вызов? ...   30.5.2013, 16:34
- - Litkevich Yuriy   Цитата(Steklova Olga @ 22.5.2013, 15:43) ...   30.5.2013, 16:58
- - Steklova Olga   Цитата(Litkevich Yuriy @ 30.5.2013, 16:58...   30.5.2013, 18:24
- - Litkevich Yuriy   Цитата(Steklova Olga @ 30.5.2013, 20:24) ...   30.5.2013, 21:33
- - Steklova Olga   Цитата(Litkevich Yuriy @ 30.5.2013, 21:33...   31.5.2013, 9:02
- - Анна   Цитата(Steklova Olga @ 31.5.2013, 10:02) ...   31.5.2013, 12:13
|- - Steklova Olga   Цитата(Анна @ 31.5.2013, 12:13) Да.хорошо...   31.5.2013, 13:01
- - Litkevich Yuriy   Мапер решение специфическое, он живёт своей жизнью...   31.5.2013, 13:11
- - Steklova Olga   Цитата(Litkevich Yuriy @ 30.5.2013, 21:33...   31.5.2013, 14:08
- - Litkevich Yuriy   Steklova Olga, а как настроены модель и Мапер (реж...   31.5.2013, 15:09
- - Steklova Olga   Цитата(Litkevich Yuriy @ 31.5.2013, 15:09...   31.5.2013, 15:18
- - Steklova Olga   Поменяла для себя в коде примера драйвер на QIBASE...   31.5.2013, 15:50
- - Litkevich Yuriy   Цитата(Steklova Olga @ 31.5.2013, 17:50) ...   31.5.2013, 16:13
- - Steklova Olga   Цитата(Litkevich Yuriy @ 31.5.2013, 16:13...   31.5.2013, 17:02
- - Steklova Olga   Начала проверять разные ветки алгоритма работы опе...   31.5.2013, 17:52
- - Litkevich Yuriy   Цитата(Steklova Olga @ 31.5.2013, 19:52) ...   31.5.2013, 19:33
- - Steklova Olga   Цитата(Litkevich Yuriy @ 31.5.2013, 19:33...   3.6.2013, 10:36
- - Litkevich Yuriy   Цитата(Steklova Olga @ 3.6.2013, 12:36) т...   3.6.2013, 18:49


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


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




RSS Текстовая версия Сейчас: 20.4.2024, 7:40