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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Одинаковые строки в таблице БД  (Прочитано 5032 раз)
Senia_Bezrubashkin
Гость
« : Февраль 14, 2013, 02:08 »

Создаю таблицу БД (SQLite). В диалоговом окне ввожу имя таблицы и число строк. Таблица создается, но строка в ней одна, т. к. строки одинаковые (пустые). Как сделать, чтобы отображались все пустые строки?
Заранее спасибо.
Записан
carrygun
Гость
« Ответ #1 : Февраль 14, 2013, 05:21 »

Чем создаешь? Где создаешь? Как создаешь? Что за строки? В каком диалоге? Где должны отображаться строки? Да и зачем таблица с пустыми строками?
Блин, ну нифига же не понятно.
Записан
Senia_Bezrubashkin
Гость
« Ответ #2 : Февраль 14, 2013, 08:37 »

Код:
void MainWindow::createTable(QString tableName, int n) // n - количество строк в таблице.
{
    QSqlQuery query;
    QString str = "create table ";
    str.append(tableName);
    str.append(" (surname varchar(20) primary key, firstname varchar(20),"
               " patronymic varchar(20), attendance varchar(20), performance_of_tasks varchar(20))");
    if(!query.exec(str))
    {
        qDebug()<<"Unable to create a table";
    }
    for(int i = 1; i <= n; i++)
    {
        str = "insert into ";
        str.append(tableName);
        str.append(" values('', '', '', '', '')");
        query.exec(str);
    }
}
А нужна таблица с пустыми строками для удобства... это, типа, журнал учета посещаемости и выполнения заданий. Имя таблицы - это название группы учащихся, а число n - вводимое при создании группы, это количество учащихся в ней. Чтобы не добавлять по одному студенту за операцию, сразу указываем количество человек в ней... появляется (должна появляться) таблица с нужным количеством строк в которые просто вводим данные студентов. Примерно так.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Февраль 14, 2013, 08:45 »

primary key разве может быть пустым и не уникальным?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
carrygun
Гость
« Ответ #4 : Февраль 14, 2013, 08:51 »

Создай лучше так:
Код:
CREATE TABLE table_name (id INTEGER PRIMARY KEY, field1 TEXT, field2 TEXT, ...)
и забивай только тексты.

Делать ключи текстовыми это не хорошо, да еще и одинаковые.
Записан
Senia_Bezrubashkin
Гость
« Ответ #5 : Февраль 14, 2013, 09:53 »

А есть возможность не отображать колонку id INTEGER PRIMARY KEY? Мне не нужно, чтобы выводились цифры. Ну, или не отображать вертикальные заголовки (заголовки строк), там цифры отображаются. И заголовок последней колонки шире чем остальные. Добавление количества символов под нее не изменяет ситуации. Как можно поправить?
« Последнее редактирование: Февраль 14, 2013, 10:07 от Senia_Bezrubashkin » Записан
carrygun
Гость
« Ответ #6 : Февраль 14, 2013, 10:05 »

Выбирай нужные элементы. И опять же кто знает где и как ты их выводишь.
Записан
Senia_Bezrubashkin
Гость
« Ответ #7 : Февраль 14, 2013, 10:40 »

Подгружаю вот так...

Код:
void MainWindow::loadTable(const QModelIndex & index)
{
    QVariant val(model_1->data(index, Qt::DisplayRole));
    QString tableName = val.toString();
    model_2->setTable(tableName);
    model_2->setEditStrategy(QSqlTableModel::OnFieldChange);
    model_2->select();

    model_2->setHeaderData(0, Qt::Horizontal, tr("id"));
    model_2->setHeaderData(1, Qt::Horizontal, tr("family"));
    model_2->setHeaderData(2, Qt::Horizontal, tr("firstname"));
    model_2->setHeaderData(3, Qt::Horizontal, tr("patronymic"));
    model_2->setHeaderData(4, Qt::Horizontal, tr("attendance"));
    model_2->setHeaderData(5, Qt::Horizontal, tr("performance_of_tasks"));
}
И что значит выбирай нужные элементы?
« Последнее редактирование: Февраль 14, 2013, 10:49 от Senia_Bezrubashkin » Записан
carrygun
Гость
« Ответ #8 : Февраль 14, 2013, 11:12 »

У вьюхи, к которой приделана модель, просто скрой столбец.
Записан
Senia_Bezrubashkin
Гость
« Ответ #9 : Февраль 14, 2013, 12:19 »

Типа, так?
Код:
view_2->setColumnHidden(0, true);
Вроде работает.
Записан
Senia_Bezrubashkin
Гость
« Ответ #10 : Февраль 14, 2013, 12:22 »

А с текстом заголовка столбца который не весь виден... что можно сделать?
Записан
carrygun
Гость
« Ответ #11 : Февраль 14, 2013, 13:54 »

Ну не знаю, resizeColumnsToContents()?
Записан
Senia_Bezrubashkin
Гость
« Ответ #12 : Февраль 14, 2013, 13:59 »

Блин... работает! Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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