Beispiel #1
0
Q3DataBrowser::Boundary Q3DataBrowser::boundary()
{
    Q3SqlCursor* cur = d->cur.cursor();
    if (!cur || !cur->isActive())
        return Unknown;
    if (!cur->isValid()) {
        if (cur->at() == QSql::BeforeFirst)
            return BeforeBeginning;
        if (cur->at() == QSql::AfterLast)
            return AfterEnd;
        return Unknown;
    }
    if (cur->at() == 0)
        return Beginning;
    int currentAt = cur->at();

    Boundary b = None;
    if (!cur->previous())
        b = Beginning;
    else
        cur->seek(currentAt);
    if (b == None && !cur->next())
        b = End;
    cur->seek(currentAt);
    return b;
}
Beispiel #2
0
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;
}
Beispiel #3
0
bool Q3DataBrowser::currentEdited()
{
    QSqlRecord* buf = d->frm.record();
    Q3SqlCursor* cur = d->cur.cursor();
    if (!buf || !cur)
        return false;
    if (!cur->isActive() || !cur->isValid())
        return false;
    writeFields();
    for (int i = 0; i < cur->count(); ++i) {
        if (cur->value(i) != buf->value(i))
            return true;
    }
    return false;
}