Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Senia_Bezrubashkin от Февраль 14, 2013, 02:08



Название: Одинаковые строки в таблице БД
Отправлено: Senia_Bezrubashkin от Февраль 14, 2013, 02:08
Создаю таблицу БД (SQLite). В диалоговом окне ввожу имя таблицы и число строк. Таблица создается, но строка в ней одна, т. к. строки одинаковые (пустые). Как сделать, чтобы отображались все пустые строки?
Заранее спасибо.


Название: Re: Одинаковые строки в таблице БД
Отправлено: carrygun от Февраль 14, 2013, 05:21
Чем создаешь? Где создаешь? Как создаешь? Что за строки? В каком диалоге? Где должны отображаться строки? Да и зачем таблица с пустыми строками?
Блин, ну нифига же не понятно.


Название: Re: Одинаковые строки в таблице БД
Отправлено: Senia_Bezrubashkin от Февраль 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 - вводимое при создании группы, это количество учащихся в ней. Чтобы не добавлять по одному студенту за операцию, сразу указываем количество человек в ней... появляется (должна появляться) таблица с нужным количеством строк в которые просто вводим данные студентов. Примерно так.


Название: Re: Одинаковые строки в таблице БД
Отправлено: Пантер от Февраль 14, 2013, 08:45
primary key разве может быть пустым и не уникальным?


Название: Re: Одинаковые строки в таблице БД
Отправлено: carrygun от Февраль 14, 2013, 08:51
Создай лучше так:
Код:
CREATE TABLE table_name (id INTEGER PRIMARY KEY, field1 TEXT, field2 TEXT, ...)
и забивай только тексты.

Делать ключи текстовыми это не хорошо, да еще и одинаковые.


Название: Re: Одинаковые строки в таблице БД
Отправлено: Senia_Bezrubashkin от Февраль 14, 2013, 09:53
А есть возможность не отображать колонку id INTEGER PRIMARY KEY? Мне не нужно, чтобы выводились цифры. Ну, или не отображать вертикальные заголовки (заголовки строк), там цифры отображаются. И заголовок последней колонки шире чем остальные. Добавление количества символов под нее не изменяет ситуации. Как можно поправить?


Название: Re: Одинаковые строки в таблице БД
Отправлено: carrygun от Февраль 14, 2013, 10:05
Выбирай нужные элементы. И опять же кто знает где и как ты их выводишь.


Название: Re: Одинаковые строки в таблице БД
Отправлено: Senia_Bezrubashkin от Февраль 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"));
}
И что значит выбирай нужные элементы?


Название: Re: Одинаковые строки в таблице БД
Отправлено: carrygun от Февраль 14, 2013, 11:12
У вьюхи, к которой приделана модель, просто скрой столбец.


Название: Re: Одинаковые строки в таблице БД
Отправлено: Senia_Bezrubashkin от Февраль 14, 2013, 12:19
Типа, так?
Код:
view_2->setColumnHidden(0, true);
Вроде работает.


Название: Re: Одинаковые строки в таблице БД
Отправлено: Senia_Bezrubashkin от Февраль 14, 2013, 12:22
А с текстом заголовка столбца который не весь виден... что можно сделать?


Название: Re: Одинаковые строки в таблице БД
Отправлено: carrygun от Февраль 14, 2013, 13:54
Ну не знаю, resizeColumnsToContents()?


Название: Re: Одинаковые строки в таблице БД
Отправлено: Senia_Bezrubashkin от Февраль 14, 2013, 13:59
Блин... работает! Спасибо.