Название: с++ QT 4.8.1 + MySQL Server 5.5 (формирование запросов через GUI) Отправлено: alammer от Июль 26, 2012, 09:57 Здравствуйте:)
Написал программу по выводу на экран информации из БД. Вывод осуществляется через QSQLQueyModel+QTableView. БД нужна для логирования, поэтому сами данные нередактируемые, к тому же будет заточена под единственного на каждую сессию клиента. Единственная функция приложения в том, чтобы предоставить пользователю возможность выборки из БД по некоторым критериям. Т.к. потенциальный пользователь с SQL не знаком и знакомится не собирается, думаю самым удобным способом выбора критериев будет выделение мышью или некой комбинацией "кнопка+ЛКМ/ПКМ" нескольких критериев выборки на экранном представлении с последующим формированием запроса. Т.е. если грубо, кликаем на "Фамилию1", кликаем на "Фамилию2", кликаем на "ДатуХ", нажимаем на форме большую кнопку "Применить фильтр" и смотрим на результат. Общие принципы формирования запросов в БД я знаю, как определять содержимое кликнутой ячейки таблиц (т.е. критерий выборки) тоже вроде по форумам освещено нормально, непонятно как это оптимально совместить в одном месте - запросы в драйвер БД передаются виде строки, где название таблицы и столбцы, по которым будет производится выборка (т.е. в данном случае "Фамилия" и "дата"), вроде должны указываться явно? Я думал в сторону формирования набора шаблонов, учитывающих все возможные варианты сочетания столбцов, но потом вспомнил комбинаторику и осознал, что для таблицы из 15 столбцов это слишком будет:) Если кто сталкивался с подобной проблемой, то буду рад помощи:) А то я QT c MySQL первый раз три недели назад увидел и туплю сильно, вчера потратил полдня, чтобы понять как размер таблицы к размеру окна привязать, а там всего два раза мышью кликнуть надо было:) Название: Re: с++ QT 4.8.1 + MySQL Server 5.5 (формирование запросов через GUI) Отправлено: Bepec от Июль 26, 2012, 10:03 А поставить простейший виджет фильтр религия не позволяет?
Или вы хотите, чтобы пользователь тыкал на ячейки таблицы и далее жал на кнопку(как то кривовато, вы так не думаете?). Если вы хотите фильтровать по столбцам, то сформировать запрос вы наверно сможете. Вам необходимо просто дать пользователю возможность выбрать чекбоксы с фильтрами. Если же хотите по данным, тогда просто сделайте множественный селект в view. А при нажатии на кнопку проходите по ним и составляйте запрос. Название: Re: с++ QT 4.8.1 + MySQL Server 5.5 (формирование запросов через GUI) Отправлено: alammer от Июль 27, 2012, 10:48 простейший виджет-фильтр не очень удобен, когда когда записей несколько тысяч, а отдельные поля записи состоят из 30-знаных число-буквенных последовательностей:)
заставить пользователя до посинения лист-боксы крутить в поисках нужного варианта или по 100 знаков вбивать без права на ошибку конечно легче, но как-то не сильно прямее выглядит:) про множественный селект то понятно, непонятно как после него динамически сформировать запрос в БД? к QSqlDriver::sqlStatement можно не отсылать, не подходит Название: Re: с++ QT 4.8.1 + MySQL Server 5.5 (формирование запросов через GUI) Отправлено: Bepec от Июль 27, 2012, 14:13 Эммм... я незнаю, как вы представляете себе виджет фильтр. Я себе представляю тупой запрос в БД и показ результатов.
А так же есть прокси модели. Я с ними мало знаком, но они то как раз и предоставляют вроде выборочного показа информации. |