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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableview  (Прочитано 5015 раз)
NIKA
Гость
« : Сентябрь 06, 2012, 09:50 »

Всем привет!В Qt новичок. Вот появился вопрос-как мне  по имеющемуся номеру участка num вытащить его id из базы?
Записан
mutineer
Гость
« Ответ #1 : Сентябрь 06, 2012, 09:57 »

Вероятно при помощи SQL-запроса и класса QSqlQuery
Записан
NIKA
Гость
« Ответ #2 : Сентябрь 06, 2012, 10:58 »

int id = "SELECT id FROM amnu WHERE num"=+num, где num получаю int num =ui->amnuPropertiesTableView->model()->data(indexcolumn).toInt(); Не хочет работать.Что-то с синтаксисом наверное. Посмотрите, пожалуйста!
Записан
mutineer
Гость
« Ответ #3 : Сентябрь 06, 2012, 10:59 »

ага, синтаксис совсем не похож на C++ - инту присваивать строку это как-то странно
Записан
NIKA
Гость
« Ответ #4 : Сентябрь 06, 2012, 11:01 »

int num = ui->amnuPropertiesTableView->model()->data(indexcolumn).toInt();
            QString string = QVariant(num).toString();
            qDebug()<<string;
            QString sqlFilter;
            sqlFilter = "SELECT id FROM amnu WHERE num ="+string;
qDebug возвращает "458"
"SELECT id FROM amnu WHERE num =458" сам номер а не его Id
Записан
mutineer
Гость
« Ответ #5 : Сентябрь 06, 2012, 11:03 »

А что еще ты ожидал видеть в qDebug(), если ты в него выводишь значение num? SQL-запрос составленный надо еще выполнить. Читай доку по QSqlQuery
Записан
NIKA
Гость
« Ответ #6 : Сентябрь 06, 2012, 11:06 »

Спасибо! Смеющийся
Записан
NIKA
Гость
« Ответ #7 : Сентябрь 06, 2012, 11:21 »

Сделала так и все равно id  выводит 0, но qDebug()<<query.exec(sqlFilter) равно true.Посмотрите, пожалуйста в чем ошибка, все утро уже парюсь.

 QString string = QVariant(num).toString();
            QSqlQuery query;
            QString sqlFilter;
            sqlFilter = "SELECT id FROM amnu WHERE num ="+string;
            if (!query.exec(sqlFilter))
            {
               qDebug() << "Cannot open database:" << query.lastError();

            };
            qDebug()<<query.exec(sqlFilter);
            int id = QVariant(sqlFilter).toInt();
            qDebug()<<id;
Записан
mutineer
Гость
« Ответ #8 : Сентябрь 06, 2012, 11:24 »

QVariant(sqlFilter).toInt(); - вот это строчка берет строку "SELECT id FROM amnu WHERE num =" и переводит в int. глупость. читай доку

Ну и два раза выполнять запрос бессмысленно
Записан
NIKA
Гость
« Ответ #9 : Сентябрь 06, 2012, 11:34 »

Я так понимаю, что запрос выполнился и теперь мне это значение надо получить. Но как, что то я не нашла. Next что ли?Подскажи, пожалуйста. Улыбающийся
Записан
mutineer
Гость
« Ответ #10 : Сентябрь 06, 2012, 11:35 »

В доке написано доходчиво и есть примеры
Записан
NIKA
Гость
« Ответ #11 : Сентябрь 06, 2012, 11:46 »

Все, получилось!  Веселый Спасибо большое за подсказки!!!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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