|
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()));
}
} |
最佳答案
查看完整内容
自己调试一下找找原因吧,给你个例子,应该问题不到。
|