两个通过QSqltableModel模型在QtableView上显示数据库数据的tab
tab1 中view1 绑定 model1 连接 表1
tab2 中view2 绑定 model2 连接 表2
单独查询1 和 2 可以正常显示,但查询1 再查询2 之后再点回1 的时候 就会卡死。
Process finished with exit code -1073741819 (0xC0000005)
def sql_con(self): #数据库连接
db = QSqlDatabase().addDatabase('QODBC') #数据库类型
db.setDatabaseName('DRIVER={SQL SERVER};SERVER=127.0.0.1\\sqlexpress;DATABASE=WMSsql;Uid=CISDI;pwd=0314')
db.open() #(数据库驱动,服务器,数据库,用户名,密码)
if db.open():
print("connected")
return db
def showdata2(self, signal): #数据显示模块
db2 = self.sql_con() #调用开启数据库
tbmodel2 = QtSql.QSqlTableModel(None, db2)
tbmodel2.setTable("pktable") #设置数据源
tbmodel2.setHeaderData(0, QtCore.Qt.Horizontal, '盘库号')
tbmodel2.setHeaderData(1, QtCore.Qt.Horizontal, '盘库时间')
tbmodel2.setHeaderData(2, QtCore.Qt.Horizontal, '盘库位置')
tbmodel2.setHeaderData(3, QtCore.Qt.Horizontal, '盘库备注')
tbmodel2.setHeaderData(4, QtCore.Qt.Horizontal, '是否盘库')
tbmodel2.setHeaderData(5, QtCore.Qt.Horizontal, '物料编码') #设置tableview表头
tbmodel2.setHeaderData(6, QtCore.Qt.Horizontal, '名称')
tbmodel2.setHeaderData(7, QtCore.Qt.Horizontal, '规格')
tbmodel2.setHeaderData(8, QtCore.Qt.Horizontal, '数量')
tbmodel2.setHeaderData(9, QtCore.Qt.Horizontal, '单价')
tbmodel2.setHeaderData(10, QtCore.Qt.Horizontal, '供应商')
tbmodel2.setHeaderData(11, QtCore.Qt.Horizontal, '采购人')
tbmodel2.setHeaderData(12, QtCore.Qt.Horizontal, '采购时间')
tbmodel2.setHeaderData(13, QtCore.Qt.Horizontal, '入库时间')
tbmodel2.setHeaderData(14, QtCore.Qt.Horizontal, '入库备注')
tbmodel2.setHeaderData(15, QtCore.Qt.Horizontal, '仓库')
tbmodel2.setHeaderData(16, QtCore.Qt.Horizontal, '入库员')
tbmodel2.setHeaderData(17, QtCore.Qt.Horizontal, '物料类别')
tbmodel2.setHeaderData(18, QtCore.Qt.Horizontal, '存放位置')
tbmodel2.setEditStrategy(QSqlTableModel.OnManualSubmit)
tbmodel2.setSort(1, QtCore.Qt.DescendingOrder)
if signal == 1:
QApplication.processEvents()
tbmodel2.select() #查询
self.tablepk.setModel(tbmodel2) #设置表格模式
self.tablepk.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.tablepk.show()
print("done")
两个基本上是这样 只是 名字不一样。
在Qt应用中,使用QSqlTableModel分别连接并显示表1和表2,当从一个表切换到另一个表再返回时,程序出现卡死,错误代码为0xC0000005。单独查询每个表正常,问题可能出在模型与视图的数据交互上。
616

被折叠的 条评论
为什么被折叠?



