Russian Qt Forum
Март 29, 2024, 11:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] QSqlQuery & SELECT EXISTS  (Прочитано 3056 раз)
psk07
Гость
« : Октябрь 11, 2019, 15:07 »

Всем привет. Помогите пожалуйста найти ошибку в SELECT EXIST. Не могу пройти проверку value.

QSqlQuery query;

QString strF = QString("SELECT EXISTS (SELECT " DEVICE_ORIG " FROM " DEVICE " WHERE ( " DEVICE_ORIG " = '%1' ) AND id NOT LIKE '%2' )");
QString str = strF.arg(ui.lineEdit->text(), model->data(model->index(mapper->currentIndex(), 0), Qt::DisplayRole).toString());

query.prepare(str);
query.exec();
query.next();

// Если запись существует, то диалог вызывает предупредительное сообщение
if (query.value(0) != 0)
{
    QMessageBox::information(this, trUtf8("Error"), trUtf8("Such a log or comment already exists"));
}
« Последнее редактирование: Октябрь 14, 2019, 14:02 от psk07 » Записан
vbv
Чайник
*
Offline Offline

Сообщений: 59


Просмотр профиля
« Ответ #1 : Октябрь 11, 2019, 17:33 »

query.value(0).toInt()!=0
А лучше
if(query.value(0).toBool()){...}

Или вообще без exist;
if(query.next()){
// запись существует.
}
« Последнее редактирование: Октябрь 11, 2019, 17:35 от vbv » Записан
vbv
Чайник
*
Offline Offline

Сообщений: 59


Просмотр профиля
« Ответ #2 : Октябрь 11, 2019, 17:42 »

Всем привет. Помогите пожалуйста найти ошибку в SELECT EXIST. Не могу пройти проверку value.

QSqlQuery query;

QString strF = QString("SELECT EXISTS (SELECT " DEVICE_ORIG " FROM " DEVICE " WHERE ( " DEVICE_ORIG " = '%1' ) AND id NOT LIKE '%2' )");
QString str = strF.arg(ui.lineEdit->text(), model->data(model->index(mapper->currentIndex(), 0), Qt::DisplayRole).toString());

query.prepare(str);
query.exec();
query.next();

// Если запись существует, то диалог вызывает предупредительное сообщение
if (query.value(0) != 0)
{
    QMessageBox::information(this, trUtf8("Error"), trUtf8("Such a log or comment already exists"));
}


И еще
query.prepare("SELECT EXISTS (SELECT " DEVICE_ORIG " FROM " DEVICE " WHERE ( " DEVICE_ORIG " = :device_orig) AND id NOT LIKE :id; )"); 
query.bindValue(":device_orig", ui.lineEdit->text());
query.bindValue(":id", model->data(model->index(mapper->currentIndex(), 0), Qt::DisplayRole).toString());
query.exec();
.....

// скобочки не считал, мог немного напутать с их соответствием.
Записан
psk07
Гость
« Ответ #3 : Октябрь 14, 2019, 14:01 »

query.value(0).toInt()!=0
А лучше
if(query.value(0).toBool()){...}

Или вообще без exist;
if(query.next()){
// запись существует.
}

Спасибо большое toBool()) очень выручил.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.08 секунд. Запросов: 22.