Hi there,

i've got a problem. In my class enderNewIdOrder(QtGui.QDialog) the insertRow  
doesn't work. I did as in "Rapid GUI Programming with Python and Qt" discribed. 
But the insert into the Database PostgreSQL over ODBC doesn't work. Regular 
changes are applied.

The application based on QDialog. It has two View (customerView representing 
customerModel=QSqlQuery() and projectView representing projectModel = 
QSqlTableModel())

Here comes my function

    def addProject(self):
        customerindex = self.customerView.currentIndex()
        if not customerindex.isValid():
            return
        QtSql.QSqlDatabase.database().transaction()
        record = self.customerModel.record(customerindex.row())
        # getting foreign key
        idpartner = record.value(0).toInt()[0]
        
        # getting new primary key
        query = QtSql.QSqlQuery()
        query.exec_("SELECT MAX(idproject) FROM project")
        if query.next():
            idproject = query.value(0).toInt()[0]+1
        
        row = self.projectModel.rowCount()
        self.projectModel.insertRow(row)
                      QtCore.QVariant(QtCore.QDate.currentDate()))
        self.projectModel.setData(self.projectModel.index(row, 0), 
QtCore.QVariant(idproject))
        self.projectModel.setData(self.projectModel.index(row, 1), 
QtCore.QVariant(QtCore.QString(u"New Project")))
        self.projectModel.setData(self.projectModel.index(row, 2), 
QtCore.QVariant(1))
        self.projectModel.setData(self.projectModel.index(row, 3), 
QtCore.QVariant(idpartner))
        self.projectModel.setData(self.projectModel.index(row, 4), 
QtCore.QVariant(0))
        self.projectModel.setData(self.projectModel.index(row, 5), 
QtCore.QVariant(0))
        self.projectModel.setData(self.projectModel.index(row, 6), 
QtCore.QVariant(QtCore.QDateTime.currentDateTime()))

        QtSql.QSqlDatabase.database().commit()
        index = self.projectModel.index(row, 1)
        self.projectView.setCurrentIndex(index)
        self.projectView.edit(index)


I hope anybody ould give me a hint, what I'm doing wrong. It cost me the last 
10 hours.
If I insert the row manualy by inserting folling code between the transaction. 
I get the new Line, but I can edit the content only after I left the current 
customer and reread the actual customer.

Here the manual insert

query.prepare("INSERT INTO project (idproject,description ,idunit, 
idpartner,idaddress, statusid,created ) "
                      "VALUES (:idproject, 
:description,:idunit,:idpartner,null,0, now())")
        query.bindValue(":idproject", QtCore.QVariant(idproject))
        query.bindValue(":description", 
QtCore.QVariant(QtCore.QVariant(QtCore.QString("Neues Projekt"))))
        query.bindValue(":idunit", QtCore.QVariant(1))
        query.bindValue(":idpartner", QtCore.QVariant(idpartner))
        query.exec_()

Thanks in advance,

Volker
-- 
Neu: GMX FreeDSL Komplettanschluss mit DSL 6.000 Flatrate + Telefonanschluss 
für nur 17,95 Euro/mtl.!* http://portal.gmx.net/de/go/dsl02
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to