Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Конвертация и изменение в QTableView + SQL |
Автор: derilshows 23.3.2016, 00:14 |
Всем привет! Очень нужен Ваш совет. Есть БД, где в одной колонке записаны коды в виде: 10, 10-09, 10-10, 10-11, 15, 15-02, 15-03 и тд. Каждому значению соответсвтует месяц(в числовом формате). Я делаю SQL запрос, в котором выводится какие коды в каком месяце, с подсчетом сколько раз были вызваны. Запрос отображается в QTableView. Выходит формат: СКОЛЬКО РАЗ БЫЛ ВЫЗВАН, В КАКОМ МЕСЯЦЕ, КАКОЙ КОД. Например, будет вывод: 125, 04, 10-09 4, 04, 10-10 93, 05, 15-02 43, 05, 15-03 Что я хочу: Все коды, которые начинаются на две одинаковые цифры, должны обьединиться в одну строку, и уже отображаться только этими первыми двумя цифрами. Но нужно сохранить сортировку по месяцам, дабы коды из разных месяцев не склеивались. Естественно, первая коллонка(сколько раз был вызван) при обьединении должна суммировать соответственные значения строк, что склеиваются. В итоге, должно выйти так: 129, 04, 10 136, 05, 15 Можно ли решить этот вопрос чисто SQL? Или нужно использовать QT модель? Очень прошу помочь, совсем не представляю как это сделать. |
Автор: ss 24.3.2016, 00:27 |
мне кажется проще будет сделать такое в с++ чем в sql а модель все равно нужна для TableView. Я так бы сделал : берем QSqlTableModel, выполняем запрос. В результате в этой модели будет данные (как в примере выше). берем QStandardTableModel - модель кот. будет у TableView в цикле по всем строкам читаем QSqlTableModel смотрим, есть ли запись с кодом QSqlTableModel[j][code] == QStandardTableModel[i][code] ? ДА: добавить к счетчику значение повторений; НЕТ: добавить строку с записью. Тут не указано когда будут одинаковые коды но разные месяцы. Ну а дальше устанавливаем модель в TableView. |
Автор: derilshows 24.3.2016, 00:46 |
Функция должна срабатывать только когда оба значения совпадают. Так как в разных месяцах могут быть одинаковые коды, но мне никак не надо перемешивать все)) Спасибо, не совсем понимаю как это реализовать, но буду пытаться. |
Автор: ss 24.3.2016, 01:37 | ||
у меня Qt v 5.6.0. Его немного переделали. вместо QSqlTableModel взял QSqlQuery.
|
Автор: derilshows 24.3.2016, 01:57 |
Ого, даже код есть! Не ожидал, огромное спасибо Вам!! У меня вопрос. Не совсем понятно как работает фрагмент наращивания счетчика. Программа мониторит строки в qtableview. Если два заданных параметра совпадают, допустим у пяти строк, то вместо них будет одна, где в первой ячейке будет сумма всех 5 первых ячеек из этих строк. Верно ли я понимаю, как будет работать? |
Автор: borisbn 24.3.2016, 09:13 | ||
http://sqlfiddle.com/#!9/4a519/2/0 Не ? |