Hi Phil, here's is a nasty problem with using a custom QSqlCursor on a QDataTable, I didn't found a workaround yet (other than avoiding this all together, which isn't a feasible option here):
Whenever the update() and delRecords() methods on the parent class are called, they show recursive behavior, just like (wrongly) calling self.update(invalidate) in the custom QSqlCursor class. Another aspect on this problem is, that QDataTable insists on a 3 arg signature when calling sqlCursor().update(), but the base class must be called with the 2 arg variant. Btw: Qt 3.3.6 itself doesn't provide any arguments, as seen in sql/qdatatable.cpp [around line 1144]: case QSql::Yes: { #ifndef QT_NO_CURSOR QApplication::setOverrideCursor( Qt::waitCursor ); #endif emit beforeUpdate( d->editBuffer ); b = sqlCursor()->update(); #ifndef QT_NO_CURSOR QApplication::restoreOverrideCursor(); #endif You find a small self containing script exploring this problem attached. You may want to adjust the db variables on top of the script beforehand. Creating the mysql database is done with: mysql < t.sql provided, that you have valid access parameter in your .my.cnf client section. Beware, this sql script will silently drop a database named t, if one exists. Running qdatatableproblem.py should show you a small table, where inserting works as expected, but updating and deleting does not (here at least). Some diagnostics are printed on the console. Any hints fixing this problem are highly appreciated. TIA, Pete Python version: 2.4 sip version: 4.4.5 Qt version: 3.3.6 PyQt version: 3.16
drop database if exists t; create database if not exists t; use t; drop table if exists t; create table t ( id int unsigned not null primary key auto_increment, val varchar(100), ts timestamp ); insert into t (val) values ("try inserting"), ("updating"), ("and deleting"), ("some records"), ("via context menu");
qdatatableproblem.py
Description: application/python
_______________________________________________ PyKDE mailing list PyKDE@mats.imk.fraunhofer.de http://mats.imk.fraunhofer.de/mailman/listinfo/pykde