powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
19 сообщений из 19, страница 1 из 1
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40026937
MAGRAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Пытаюсь решить довольно заурядную проблемку, которую тырнеты безуспешно вопрошают аж с 2007го.
Добавляю строку в tableview:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
// Add new row (section) in model_report
void mainwidget::on_pushButton_5_clicked()
{
    /*qDebug() << "inserting new row (section):" <<
                model_report.insertRow(model_report.rowCount());*/
    int selectedRow = ui->tableView->currentIndex().row()+1;
    if (selectedRow>=0) {
        qDebug() << "inserting new row (section):" <<
                    model_report.insertRow(selectedRow);
    }
    else {
        qDebug() << "no row (section) selected.";
    }
}


подтверждаю изменения:
Код: plaintext
1.
2.
3.
4.
5.
// Accept changes model_report
void mainwidget::on_pushButton_20_clicked()
{
    model_report.submitAll();
}


Запись улетает в конец списка. Оно и понятно. Когда мы к БД применяем INSERT то запись прилетает в конец списка. Так и должно быть, но на дворе какой год. Зачем ковыряться с sql-запросами и двигать новую запись на нужное место в БД? Я же использую всемогущий model....!

Как мне видится решение этой проблемы:
1) пульнуть содержимое таблицы tableView в БД, заместив предыдущую таблицу.
2) задействовать фильтр, но уж совсем избыточно
3) накостылять запросами, но это вообще ерунда кая то.

Посоветуйте как справиться с этим цивильно?
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40026962
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAV
Зачем ковыряться с sql-запросами и двигать новую запись на нужное место в БД?

Что тут вообще подразумевалось с точки зрения SQL?
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40026980
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAV
Когда мы к БД применяем INSERT то запись прилетает в конец списка.
открою тайну. В бд нет конца.
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40026981
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, довольно забавно. Первая строчка:

Код: plaintext
1.
int selectedRow = ui->tableView->currentIndex().row()+1;


Насколько я понимаю, код «ui->tableView->currentIndex().row()» вернёт -1 если текущая строка не выбрана. Но к этому возвращённому значению тут же прибавляется +1. Тем самым теряется информация о том выбрана строка или нет. А потом, по уже утерянной информации мы пытаемся определить: так выбрана строка или нет, ***?

Код: plaintext
1.
if (selectedRow>=0) {


Стиль проектирования библиотеки Qt: не падать по возможности, а скрывать ошибки. Не факт что это хороший выбор.
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40026990
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAV,
Расскажите ваше видение вставки записи с ФИО на "Я" если у вас сортировка по ФИО? Вы на первой странице с "А"? Или на первой но с обратной сортировкой?
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40026994
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
MAGRAV,
Расскажите ваше видение вставки записи с ФИО на "Я" если у вас сортировка по ФИО? Вы на первой странице с "А"? Или на первой но с обратной сортировкой?

Он не понимает, что в SQL у строки нет позиции или номера.

Я почему пишу. Когда лет 10-ть назад работал с SQL там по этому поводу были нестандартные расширения от вендоров. Типа вернуть третьи N записей из SELECT. Т.е. был какой-то намёк на нумерацию, но не в таблице, а... ну понятно. Там что-то поменялось?
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40026996
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
SQL у строки нет позиции или номера.
ее можно сгенерировать если начальству удобно с нумерацией.
Тогда Иванов Иван Иванович будет то 8-ой то 148-ой.
Есть ТЗ чтобы PK был без пропусков. Это бланки строгой отчетности.
И нужно не забыть что при нажатии на F5 запись может быть удалена соседом за стенкой.
Все это влияет на сабж.
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40026997
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAGRAVС# от С++ Qt не отличаешь

Конечно не отличаю. Я слишком стар и маразматичен чтобы помнить все 100500 фреймворков в
которых есть "tableview". Но, возможно, они все работают настолько одинаково, что это даже
не стоит упоминания?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40026999
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
SQL у строки нет позиции или номера.
ее можно сгенерировать если начальству удобно с нумерацией.
Тогда Иванов Иван Иванович будет то 8-ой то 148-ой.
Есть ТЗ чтобы PK был без пропусков. Это бланки строгой отчетности.
И нужно не забыть что при нажатии на F5 запись может быть удалена соседом за стенкой.
Все это влияет на сабж.

Вот именно, что Праймари Кей и номер в строгой отчётности — это разные вещи. Если это у вас одно и тоже поле, то у вас БД некорректно спроектирована. А пользуетесь вы Авто Инкремент для первичного ключа или нет — это другое.
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40027011
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

MAGRAVС# от С++ Qt не отличаешь

Конечно не отличаю. Я слишком стар и маразматичен чтобы помнить все 100500 фреймворков в
которых есть "tableview". Но, возможно, они все работают настолько одинаково, что это даже
не стоит упоминания?..

Потому что нужно обращать внимание на синтаксис языка (кода), а не на название "tableview". И да... они все только идеологически работают одинаково, а на практике все по-разному.
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40027018
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravнужно обращать внимание на синтаксис языка (кода), а не на название "tableview".

Это не приблизит к ответу на вопрос "почему оно до сих пор работает не так как хочется
аффтару". Именно потому, что
petravони все только идеологически работают одинаково, а на практике все по-разному.

ибо вариантов этого ответа чуть больше одного:
а) Данный фреймворк вообще не умеет располагать новую запись в соответствии с текущей
сортировкой набора данных;
б) Кто-то ему забыл сообщить о том какая сортировка текущая.

И далее для каждого варианта ещё дерево подвариантов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40027074
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Джентльмены. Успокойтесь. Шериф - в городе.
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40027075
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот именно, что Праймари Кей и номер в строгой отчётности — это разные вещи. Если это у вас одно и тоже поле, то у вас БД некорректно спроектирована. А пользуетесь вы Авто Инкремент для первичного ключа или нет — это другое.
Кто вам сказал?
Не будьте максималистом.
Скажите еще что бд ВСЕГДА нормализована должна быть).
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40027078
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Вот именно, что Праймари Кей и номер в строгой отчётности — это разные вещи. Если это у вас одно и тоже поле, то у вас БД некорректно спроектирована. А пользуетесь вы Авто Инкремент для первичного ключа или нет — это другое.

Кто вам сказал?
Не будьте максималистом.
Скажите еще что бд ВСЕГДА нормализована должна быть).
Конечно. Должна.

Насколько я помню совсем уж базовые правила нормализации:

1. Ни одно поле данных не должно скрывать в себе множественных смыслов. А в твоём случае это и праймари кей, и номер строгой отчётности одновременно. Это плохо.

2. Ни одно поле данных не должно содержать в себе множественных данных. Оно не должно содержать ФИО, например, в виде одной строки.
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40027083
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Ну есть 3 степени нормализации. Но в реальной жизни бд не нормализованы. Увы.
"программирование это компромисс" (с)
Поэтому это искусство. Потому что не прямо и не прямолинейно. Должны и все тут.
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40027341
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Ну есть 3 степени нормализации.
Минимум 5, некоторые считают, что 6. Просто приводить к нормальной форме глубже 3 обычно лень.
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40027369
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010,
Ну не из за лени же.
Как это по русски - "овчинка не стоит выделки"
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40027374
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
bk0010,
Ну не из за лени же.
Как это по русски - "овчинка не стоит выделки"

Это не по-русски. Овчинка выделки не стоит.
...
Рейтинг: 0 / 0
tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
    #40027460
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
По теме есть что?
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / tableView->currentIndex, вставить строку и после .submitAll() запись останется на выбранно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]