首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSqlRelationalTableModel或QSqlQueryModel

QSqlRelationalTableModel或QSqlQueryModel
EN

Stack Overflow用户
提问于 2017-05-05 14:13:16
回答 1查看 221关注 0票数 0

描述:

我在第一种形式的数据库中使用QTableView来列出记录。我创建了第二个表单来编辑单个记录。该记录有字段,参照其他表(FK)。我尝试将QSqlRelationalTableModelsetFilter (用于选择单个记录)和setRelation (用于处理FK和组合框)一起使用。我计划使用submit来保存记录。我这个方案没有成功,因为setFiltersetRelation是冲突的。我想我应该使用QSqlQueryModel来选择单个记录。

问题:

如何保存记录(QSqlQueryModel为只读)?

这个方法对我的目标来说是正确的和最好的吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-08 18:54:31

我也有类似的问题,但我的解决方案是这样的:也许你需要改变一些东西,但它是有效的。

代码语言:javascript
复制
self.model = QSqlRelationalTableModel()
self.model.setTable("FK The table Name")
self.model.setRelation(index, QSqlRelation("Pkey table", "The id field", "The value field you want"))
self.model.select()

设置关系后,如果需要,可以创建一个映射器

代码语言:javascript
复制
self.mapper = QDataWidgetMapper()
self.mapper.setModel(self.model)
relModel = self.model.relationModel(index) #the same from the SetRelation
self.YourCombBox.setModel(relModel)
self.TourCombBox.setModelColumn(relModel.fieldIndex( "The value field you want"))
self.mapper.addMapping(self.YourCombBox, int)
self.mapper.toFirst()

为了救你,你就走吧

代码语言:javascript
复制
_insertRecord = QSqlRecord()
_insertRecord.append(QSqlField(int, QVarinat.WhatEverTypeItIs))
quer = QSqlQueryModel()
quer.setQuery("SELECT id FROM TheTable where Name = '%s'" %(YourComboxCurrentText()))
_insertRecord.setValue(int, quer.record(0).value("id"))
self.model.insertRowIntoTable(_insertRecord)      
self.model.select()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43797732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档