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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Не работает запрос добавления строки в таблицу  (Прочитано 8668 раз)
lexflax
Гость
« Ответ #15 : Январь 17, 2014, 15:29 »

Доброго времени суток.
В таблицу Kod с полями
 kodsv integer NOT NULL,
 kodg integer NOT NULL,
 kodk integer NOT NULL
Нужно добавить информацию с комбобоксов...., 1 и 2 комбобокс содержат именно значения ключей kodsv,kodg, А вот 3 комбобокс наполняется названием квалификации а не кодом... в этом возникает сложность... так как для добавления мне нужен kodk...
Взять его можно из таблицы Kvalif которая имеет два поля
kodk integer NOT NULL, - нужный мне код!!!!!
namekvf text NOT NULL, - название которое пользователь выбирает в 3 комбобоксе!!
Сейчас код выглядит так...
Код:
QSqlQuery querys;

querys.prepare("INSERT INTO  kod (kodsv,kodg,kodk) VALUES ( :kodsv,:kodg,2)");
querys.bindValue(":kodsv", ui->comboBox_3->currentText());
     querys.bindValue(":kodg", ui->comboBox_5->currentText());

querys.exec();
Так все добавляет как надо) НОО!! Значение поля Kodk  я вписал вручную...
Моя задача получить kodk , зная значение namekvf...
Пробовал так... Но тогда вообще ничего не добавляется.... Посмотрите может подскажите варианты кодов , опробую...
Код:
void Form4::on_pushButton_clicked()
{

    QSqlQuery query;
    query.prepare("select kodk from kvalif where namekvf = :namekvf");
    query.bindValue(":kodsv", ui->comboBox_3->currentText());
    if (!query.exec())
    {
        QMessageBox::warning(0, "Error", query.lastError().text());
        qDebug()<< "ERROR: " << query.lastError().text();
        return;
    }
    else
    {
        QString kodk;
        while (query.next())
        {
           kodk =query.value(0).toString();
        }

QSqlQuery querys;

querys.prepare("INSERT INTO  kod (kodsv,kodg,kodk) VALUES ( :kodsv,:kodg,:kodk)");
querys.bindValue(":kodsv", ui->comboBox_3->currentText());
     querys.bindValue(":kodg", ui->comboBox_5->currentText());
querys.bindValue(":kodk",kodk);
querys.exec();
this->close();
}
 }
Записан
lexflax
Гость
« Ответ #16 : Январь 17, 2014, 15:59 »

Все тема снята.... затупил капец как)))
Код:
void Form4::on_pushButton_clicked()
{
 
    QSqlQuery query;
    query.prepare("select kodk from kvalif where namekvf = :namekvf");
    query.bindValue(":namekvf", ui->comboBox->currentText()); В ЭТОЙ СТРОКЕ ЗНАЧЕНИЕ ПЕРЕПУТАЛ)))
    if (!query.exec())
    {
        QMessageBox::warning(0, "Error", query.lastError().text());
        qDebug()<< "ERROR: " << query.lastError().text();
        return;
    }
    else
    {
        QString kodk;
        while (query.next())
        {
           kodk =query.value(0).toString();
        }
 
QSqlQuery querys;
 
querys.prepare("INSERT INTO  kod (kodsv,kodg,kodk) VALUES ( :kodsv,:kodg,:kodk)");
querys.bindValue(":kodsv", ui->comboBox_3->currentText());
     querys.bindValue(":kodg", ui->comboBox_5->currentText());
querys.bindValue(":kodk",kodk);
querys.exec();
this->close();
}
 }
Записан
demal
Чайник
*
Offline Offline

Сообщений: 53


Просмотр профиля
« Ответ #17 : Январь 22, 2014, 21:03 »

Смотря твои разные темы я понимаю, что ты используешь для отображения вьюху, но все остальное делаешь в рукопашную через прямые запросы.
Чего не работаешь через модель? Строит глазки С ней кода будет меньше.
Combobox заполнишь просто:
QSqlTableModel model;
model.setTable("Имя таблицы");
combobox.setModel(model);
combobox.setModelColumn(номер столбца таблицы);
model.select();
Всё заполнено.
Как вставлять и удалять в таблице я тебя уже писал тебе
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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