• 4715阅读
  • 6回复

QSqlTableModel移除行时有提示 [复制链接]

上一主题 下一主题
离线乙醚
 

只看楼主 正序阅读 楼主  发表于: 2011-11-18
mymodel = new QSqlTableModel;
为什么在
mymodel->removeRow()时出现下面的提示
QSqlQuery::value: not positioned on a valid record
而采用mymodel->removeColumn()却可以正常执行
离线乙醚

只看该作者 6楼 发表于: 2011-11-19
回 5楼(jorneyr) 的帖子
果然是主键的问题啊, 谢谢你们。但是 最开始显示的时候我就是不想显示主键 ID,怎么办?
离线jorneyr

只看该作者 5楼 发表于: 2011-11-19
看看删除时执行的是什么SQL,有可能你删除column的时候,把primary key这一列给删除了,以前我也遇到这样的情况
离线乙醚

只看该作者 4楼 发表于: 2011-11-19
回 3楼(wxj120bw) 的帖子
是不是这样用嘛
  int curRow = busUnDrawTab->currentIndex().row();

    mymodel->removeRow(curRow);
    QSqlError err =mymodel->lastError();
    QString str = err.text();
    qDebug()<<str;

似乎是没有报错,输出为
QSqlQuery::value: not positioned on a valid record
" "
离线wxj120bw

只看该作者 3楼 发表于: 2011-11-18
回 2楼(乙醚) 的帖子
两种能不能同用我并清楚 但出错时 你调用QSqlDatabase::lastError()返回错误信息吗?
离线乙醚

只看该作者 2楼 发表于: 2011-11-18
回 1楼(wxj120bw) 的帖子
刚才看了下,原因应该是:
之前使用了 removeColumn()命令来控制模型在tableview中的显示(模型的每行有5列,我采用removeColumn()来移除两列,即只显示中间3列);
所以在后面调用调用 mymodel->removeRow()  来删除 选中行时 ,会出错提示;而用removeColumn()没问题。
问题是不是不能同时用 removeColumn() 和 removeRow()??
离线wxj120bw

只看该作者 1楼 发表于: 2011-11-18
回 楼主(乙醚) 的帖子
removeRow()返回false 可以QSqlDatabase::lastError()查看具体的错误原因
PS:mymodel->mymodel->removeColumn()应该为mymodel->removeColumn()
快速回复
限100 字节
 
上一个 下一个