bool Q3DataBrowser::updateCurrent() { if (isReadOnly()) return false; QSqlRecord* buf = d->frm.record(); Q3SqlCursor* cur = d->cur.cursor(); if (!buf || !cur) return false; writeFields(); emit beforeUpdate(buf); int ar = cur->update(); if (!ar || !cur->isActive()) { handleError(cur->lastError()); refresh(); updateBoundary(); } else { refresh(); d->cur.findBuffer(cur->primaryIndex()); updateBoundary(); cur->editBuffer(true); cursorChanged(Q3SqlCursor::Update); readFields(); return true; } return false; }
bool Q3DataBrowser::deleteCurrent() { if (isReadOnly()) return false; QSqlRecord* buf = d->frm.record(); Q3SqlCursor* cur = d->cur.cursor(); if (!buf || !cur) return false; writeFields(); int n = cur->at(); emit beforeDelete(buf); int ar = cur->del(); if (ar) { refresh(); updateBoundary(); cursorChanged(Q3SqlCursor::Delete); if (!cur->seek(n)) last(); if (cur->isValid()) { cur->editBuffer(true); readFields(); } else { clearValues(); } return true; } else { if (!cur->isActive()) { handleError(cur->lastError()); refresh(); updateBoundary(); } } return false; }