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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: с++ QT 4.8.1 + MySQL Server 5.5 (формирование запросов через GUI)  (Прочитано 3930 раз)
alammer
Гость
« : Июль 26, 2012, 09:57 »

Здравствуйте:)

Написал программу по выводу на экран информации из БД. Вывод осуществляется через QSQLQueyModel+QTableView. БД нужна для логирования, поэтому сами данные нередактируемые, к тому же будет заточена под единственного на каждую сессию клиента.
Единственная функция приложения в том, чтобы предоставить пользователю возможность выборки из БД по некоторым критериям. Т.к. потенциальный пользователь с SQL не знаком и знакомится не собирается, думаю самым удобным способом выбора критериев будет выделение мышью или некой комбинацией "кнопка+ЛКМ/ПКМ" нескольких критериев выборки на экранном представлении с последующим формированием запроса. Т.е. если грубо, кликаем на "Фамилию1", кликаем на "Фамилию2", кликаем на "ДатуХ", нажимаем на форме большую кнопку "Применить фильтр" и смотрим на результат.

Общие принципы формирования запросов в БД я знаю, как определять содержимое кликнутой ячейки таблиц (т.е. критерий выборки) тоже вроде по форумам освещено нормально, непонятно как это оптимально совместить в одном месте - запросы в драйвер БД передаются виде строки, где название таблицы и столбцы, по которым будет производится выборка (т.е. в данном случае "Фамилия" и "дата"), вроде должны указываться явно?

Я думал в сторону формирования набора шаблонов, учитывающих все возможные варианты сочетания столбцов, но потом вспомнил комбинаторику и осознал, что для таблицы из 15 столбцов это слишком будет:)

Если кто сталкивался с подобной проблемой, то буду рад помощи:)

А то я QT c MySQL первый раз три недели назад увидел и туплю сильно, вчера потратил полдня, чтобы понять как размер таблицы к размеру окна привязать, а там всего два раза мышью кликнуть надо было:)
Записан
Bepec
Гость
« Ответ #1 : Июль 26, 2012, 10:03 »

А поставить простейший виджет фильтр религия не позволяет?
Или вы хотите, чтобы пользователь тыкал на ячейки таблицы и далее жал на кнопку(как то кривовато, вы так не думаете?).

Если вы хотите фильтровать по столбцам, то сформировать запрос вы наверно сможете. Вам необходимо просто дать пользователю возможность выбрать чекбоксы с фильтрами.

Если же хотите по данным, тогда просто сделайте множественный селект в view. А при нажатии на кнопку проходите по ним и составляйте запрос.
Записан
alammer
Гость
« Ответ #2 : Июль 27, 2012, 10:48 »

простейший виджет-фильтр не очень удобен, когда когда записей несколько тысяч, а отдельные поля записи состоят из 30-знаных число-буквенных последовательностей:)

заставить пользователя до посинения лист-боксы крутить в поисках нужного варианта или по 100 знаков вбивать без права на ошибку конечно легче, но как-то не сильно прямее выглядит:)

про множественный селект то понятно, непонятно как после него динамически сформировать запрос в БД?

к QSqlDriver::sqlStatement можно не отсылать, не подходит
Записан
Bepec
Гость
« Ответ #3 : Июль 27, 2012, 14:13 »

Эммм... я незнаю, как вы представляете себе виджет фильтр. Я себе представляю тупой запрос в БД и показ результатов.
А так же есть прокси модели. Я с ними мало знаком, но они то как раз и предоставляют вроде выборочного показа информации.

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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