Russian Qt Forum

Qt => Базы данных => Тема начата: Krow от Июль 31, 2009, 13:43



Название: Проблема с выборкой записей в SQLite
Отправлено: Krow от Июль 31, 2009, 13:43
      
Код:
for (int t=0; t<ui.lwFirmAdd->count()-1; t++)
{
item = ui.lwFirmAdd->item(t);
FirmListItems += tr("firm = '%1' OR ").arg(item->text());
}
item = ui.lwFirmAdd->item(ui.lwFirmAdd->count()-1);
FirmListItems += tr("firm = '%1')").arg(item->text());
queryOut->exec(tr("SELECT * FROM tovar WHERE kolvo > 0 AND (%1 ORDER BY firm").arg(FirmListItems));
буду краток. вот кусок кода, если с условием kolvo > 0 то запрос выполняется верно.. а если мне нужно все значения по фирмам, не взирая на остаток делаю запрос такой:
Код:
queryOut->exec(tr("SELECT * FROM tovar WHERE %1 ORDER BY firm").arg(FirmListItems));
один фиг выбираются записи БД у которых kolvo > 0.. не знаю уже куда смотреть в этом коде.. может вы подскажите куда курить для рассмотрения прблемы под другим углом, и возможного решения данной проблемы..
ЗЫ если делать запрос через QSqlTableModel то записи проходят именно так как надо, но в данном отрезке кода желательно использовать запрос такой.
ЗЗЫ да кстати забыл сказать БД SQLite


Название: Re: Проблема с выборкой записей в SQLite
Отправлено: Krow от Август 01, 2009, 12:11
вопрос снят. разобрался уже сам. там дальше стояла проверка..
Код:
if (queryOut->value(11).toInt() > 0)
согласен что кодер в большинстве случаев сам дурак ))


Название: Re: Проблема с выборкой записей в SQLite
Отправлено: Karl-Philipp от Август 01, 2009, 14:44
Условие:
получили значение поля (QVariant), перевели его в int, сравнили с нолём.

Что-то не вижу ошибки, объясните, пожалуйста  ???


Название: Re: Проблема с выборкой записей в SQLite
Отправлено: lit-uriy от Август 01, 2009, 16:21
OFFTOP:
сдаётся мне, что функция tr() тут лишняя.
"queryOut->exec(tr(...).arg(FirmListItems));"


Название: Re: Проблема с выборкой записей в SQLite
Отправлено: CroCIV от Август 03, 2009, 15:03
сдаётся мне, что она тут лишняя вообще совсем

Код:
FirmListItems += tr("...").arg(item->text());
FirmListItems += tr("...").arg(item->text());
queryOut->exec(tr("...").arg(FirmListItems));

сомневаюсь, что в ближайшую сотню лет кому-нибудь взбредет в голову делать язык SQL зависимым от региональных языковых стандартов  ;D