crossplatform.ru

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

> Проблема со вставкой в таблицу, через QSqlTableModel
AD
  опции профиля:
сообщение 7.11.2008, 11:11
Сообщение #1


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

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

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




Репутация:   17  


Через SQL-запросы и QSQlQuery вставлять в таблицу данные удавалось, а вот с помощью QSqlTableModel почему-то нет. Кто знает, в чем ошибка?
/// Добавление серийного номера
bool AddSerialNumber::add()
{
    /// какие-то нужные действия
                /// получение значения modelID(int modelID)

    QSqlTableModel model;
    model.setTable("DeviceList");
    model.select();
    int row = model.rowCount();
    bool _j = model.insertRows(row, 1);
    model.setData(model.index(row, 0), element -> serialName);
    bool iu = model.submit();
    model.setData(model.index(row, 1), element -> secret);
    model.setData(model.index(row, 2), true);
    model.setData(model.index(row, 3), modelID);
    bool ins = model.submitAll();

    return ins;
}


Сообщение отредактировал AD - 7.11.2008, 11:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 7.11.2008, 17:40
Сообщение #2


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

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

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




Репутация:   94  


Цитата(AD @ 7.11.2008, 20:14) *
Так в этом и весь интерес, чтобы как можно меньше менять ручками. Менять руками целый запрос через QSqlQuery немного муторно
ни какой логики, менять запрос или изголятся руками шурудить в табличной модели.

Цитата(AD @ 7.11.2008, 20:14) *
(дизайн базы меняется довольно часто)
ну и что, вызывай Хранимую Процедуру (ХП), а дезайнеры БД пусть сделают тебе эту ХП, а сами внутри что угодно делают.

Я третью неделю измываюсь над своей БД, а прогу не менял, делает она такую штуку:
/*    Обертка к ХП P_APPENDDATA.
*/
bool Controller::procAppendData(int port, int addr, int framefield, int value)
{
  QSqlDatabase    db = QSqlDatabase::database();
  QSqlQuery        q(db);
  QString        qstr;
  bool            ok;  

    q.setForwardOnly(true);

    db.transaction();

    q.prepare("EXECUTE PROCEDURE P_APPENDDATA(:port, :addr, :framefield, :value)");
    q.bindValue(":port", port);
    q.bindValue(":addr", addr);
    q.bindValue(":framefield", framefield);
    q.bindValue(":value", value);
    
    ok = q.exec();
    if (!ok)
    {
        qDebug() << "procAppendData, query ERROR............" << q.lastError();
        db.rollback();
        return ok;
    }
    ok = q.isActive();

    db.commit();
    
    return ok;

}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 7.11.2008, 17:55
Сообщение #3


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

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

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




Репутация:   17  


Ясно. Жаль. Пока что придется запросами, значит, делать. Дело в том, что эу ХП мне самому придется править - большей производительности не будет. Потом, конечно, сделаю в виде ХП. Но пока пусть и так побудет!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   Проблема со вставкой в таблицу   7.11.2008, 11:11
- - sploid   я как-то так делал: QSqlTableModel model; model.se...   7.11.2008, 11:30
|- - AD   Спасибо. Но, к сожалению, не помогло!   7.11.2008, 11:52
- - sploid   может там есть какие обязательные поля, а ты их не...   7.11.2008, 12:01
|- - AD   Цитата(sploid @ 7.11.2008, 12:01) может т...   7.11.2008, 12:09
|- - AD   Блин. Обнаружил что для последнего кода по каким-т...   7.11.2008, 13:22
- - sploid   знаки вопроса заменяются значениями перед выполнен...   7.11.2008, 14:15
|- - AD   Цитата(sploid @ 7.11.2008, 14:15) знаки в...   7.11.2008, 14:25
- - Litkevich Yuriy   AD, а зачам ты вообще табличную модель (QSqlTableM...   7.11.2008, 17:09
|- - AD   Цитата(Litkevich Yuriy)AD, а зачам ты вообще табли...   7.11.2008, 17:14
- - Litkevich Yuriy   Цитата(AD @ 7.11.2008, 20:14) Так в этом ...   7.11.2008, 17:40
|- - AD   Ясно. Жаль. Пока что придется запросами, значит, д...   7.11.2008, 17:55
- - hd_qt   У меня тоже QSqlTableModel не отображает (БД fireb...   7.11.2008, 21:12
|- - AD   ЦитатаУ меня тоже QSqlTableModel не отображает (БД...   8.11.2008, 14:08
- - hd_qt   AD, По пробуй написать таблицу в верхнем регистре ...   9.11.2008, 20:16
- - AD   Цитата(hd_qt @ 9.11.2008, 20:16) AD, По п...   10.11.2008, 10:23


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


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




RSS Текстовая версия Сейчас: 2.12.2024, 18:24