[Qt-interest] HOW to make 'void QSqlTableModel::setFilter ( const QString & filter )' work
Me
dooit.lee at gmail.com
Wed Jun 8 10:23:13 CEST 2011
Thank you. I solved my problem. It's ambiguity of column name in more than
one relation.
HERE's the link: http://developer.qt.nokia.com/forums/viewthread/2261
And my code updates to, which is what I want
===================================================================
void BankAccountMS::on_fromCardIdEdit_textChanged(const QString &text)
{
if (!NDEBUG) {
cerr << "on_fromCardIdEdit_textChanged()\n";
cerr << "text.size(): " << text.size() << endl;
cerr << "text: " << text.toStdString() << endl;
}
QString filter;
if (userId != ROOT_ID && userId != INVALID_ID) {
filter += QString("card.id = %1 ").arg(userId);
if (text.size() != 0)
filter += "AND ";
}
if (text.size() != 0) {
filter += "card.id REGEXP '" + text + "'";
}
cardModel->setFilter(filter);
cardModel->select();
if (!NDEBUG) {
// cerr << "filter: " << filter.toStdString() << endl;
cerr << "filter():"
<< cardModel->filter().toStdString() << endl;
cerr << "cardModel->query().lastQuery(): "
<< cardModel->query().lastQuery().toStdString() << endl;
}
}
On Wed, Jun 8, 2011 at 1:19 AM, Me <dooit.lee at gmail.com> wrote:
> I really don't want to post this, but it seems there is still no solution
> on using QSqlTableModel::setFilter(const QString&) to get expected result. I
> have been google and search on qt-interest mailing list, but I still found
> nothing helpful on how to use QSqlTableModel::setFilter(const QString&) to
> get expected result such as 'SELECT * FROM card WHERE id = 2'. When
> setFilter(QString("id = %1").arg(userId)) (ps: where userId is 2)) and I
> selected, cardModel::rowCount() (which is QSqlRelationalTableModel) returns
> 0 and cardView (which is QTableView) display nothing.
>
> I have read the docs (Qt4.7) and I know how to use
> QSqlTableModel::setFilter(cosnt QString&), but the law of attraction seems
> not work. Does anyone get some idea what I should do?
>
> HERE I have a subroutine about QSqlTableModel::setFilter(const QString&)
> ========================================================
> void BankAccountMS::on_fromCardIdEdit_textChanged(const QString &text)
> {
> if (!NDEBUG) {
> cerr << "on_fromCardIdEdit_textChanged()\n";
> cerr << "text.size(): " << text.size() << endl;
> cerr << "text: " << text.toStdString() << endl;
> }
>
> QString filter;
>
> if (userId != ROOT_ID && userId != INVALID_ID) {
> filter += QString("id = %1 ").arg(userId);
> if (text.size() != 0)
> filter += "AND ";
> }
>
> if (text.size() != 0) {
> filter += "id REGEXP '" + text + "'";
> }
>
> cardModel->setFilter(filter);
> cardModel->select();
>
> if (!NDEBUG) {
> cerr << "filter: " << filter.toStdString() << endl;
> cerr << "filter():"
> << cardModel->filter().toStdString() << endl;
> // cerr << "cardModel->selectStatement(): "
> // << (cardModel->selectStatement()).toStdString() <<
> endl;
> }
> }
> =====================================================================
>
> --
> Victory Loves Preparation.
> Me: http://about.me/dooit
>
--
Victory Loves Preparation.
Me: http://about.me/dooit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20110608/71617bac/attachment.html
More information about the Qt-interest-old
mailing list