找回密码
 立即注册
收起左侧

QSqlRelationalTableModel用submitAll()无法提交更改???

5
回复
8696
查看
[复制链接]
累计签到:87 天
连续签到:1 天
来源: 2013-7-15 23:38:04 显示全部楼层 |阅读模式
1Qter豆
用QSqlRelationalTableModel写了个主表格A 并设置了外键。关联了另个表B。

现在我更改外键中的值,用submitAll()无法实现更改???

还有如果我改变外键表B中的值,是不是主表A中的值也随之变化??

求解答!!谢谢!!!

部分代码如下

    ui->setupUi(this);
    usrmodel = new QSqlRelationalTableModel (this);
    usrmodel->setTable("userdata");
    usrmodel->setEditStrategy(QSqlTableModel::OnManualSubmit);
    usrmodel->setRelation(3,QSqlRelation("usradmin","type","typename"));
    ////主表的第3条usradmin类型和外键表usradmin连接,并显示中usradmin中的那些值在外键表usradmin中对应的typename的值
  
    usrmodel->setHeaderData(0,Qt::Horizontal,QObject::tr("序列号"));
    usrmodel->setHeaderData(1, Qt::Horizontal, QObject::tr("用户名"));
    usrmodel->setHeaderData(2, Qt::Horizontal, QObject::tr("密码"));
    usrmodel->setHeaderData(3, Qt::Horizontal, QObject::tr("用户类型"));
    usrmodel->setHeaderData(4, Qt::Horizontal, QObject::tr("姓名"));
    usrmodel->setHeaderData(5, Qt::Horizontal, QObject::tr("性别"));
    usrmodel->setHeaderData(6, Qt::Horizontal, QObject::tr("部门"));
    usrmodel->setHeaderData(7, Qt::Horizontal, QObject::tr("职位"));

    usrmodel->select(); //选取整个表的所有行
    ui->tableView->setModel(usrmodel);
    ui->tableView->setItemDelegate(new QSqlRelationalDelegate(ui->tableView));



void mysqldata:n_action_modification_triggered()//修改
{
    usrmodel->database().transaction(); //开始事务操作
        if (usrmodel->submitAll()) //提交操作
        {
            usrmodel->database().commit(); //提交
        }
        else
        {
            usrmodel->database().rollback(); //回滚
            QMessageBox::warning(this, tr("用户列表"),
                                 tr("数据库错误: %1")
                                 .arg(usrmodel->lastError().text()));
        }
}

最佳答案

查看完整内容

自己调试一下找找原因吧,给你个例子,应该问题不到。
回复

使用道具 举报

累计签到:1570 天
连续签到:1 天
2013-7-15 23:38:05 显示全部楼层
自己调试一下找找原因吧,给你个例子,应该问题不到。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2013-7-17 08:51:38 显示全部楼层
yafeilinux 发表于 2013-7-16 20:42
自己调试一下找找原因吧,给你个例子,应该问题不到。

一样的啊 ……为啥提交修改有时候会失败……
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2013-7-17 10:36:30 显示全部楼层
yafeilinux 发表于 2013-7-16 20:42
自己调试一下找找原因吧,给你个例子,应该问题不到。

是不是因为我用了两个表,如果提交修改要指定表名还是?就像是搜索那样指定。谢谢!!!!!!
回复

使用道具 举报

累计签到:1570 天
连续签到:1 天
2013-7-17 13:03:44 显示全部楼层
20030969 发表于 2013-7-17 08:51
一样的啊 ……为啥提交修改有时候会失败……

不会啊,我给你的例子里面就是两个表,提交没有问题啊。

请把问题提示和输出贴出来。
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-5-6 14:03:21 显示全部楼层
yafeilinux 发表于 2013-7-17 13:03
不会啊,我给你的例子里面就是两个表,提交没有问题啊。

请把问题提示和输出贴出来。 ...

我问一下 如果使tableview默认没有选择行
现在我在tableiew里面显示了数据库的表 但是它默认指针在第一行 我想不要这个默认怎么弄
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了