Разрешение пользователю создавать пользовательский запрос таблицы
Я пишу программу, которая генерирует одну большую таблицу информации. Таблица состоит из двух типов столбцов, столбцов, содержащих количества, и столбцов, которые содержат свойства. Количества - это числовые значения, которые можно суммировать, свойства - это качественные значения, которые определяют значения количества.
Если данные находятся в таблице в базе данных, я могу написать запрос, который выбирает конкретные свойства и количества и суммирует величины, которые имеют одинаковое значение для выбранных свойств.
Пример:
Таблица:
Quanity1 Quanity2 Quanity3 Property1 Property2 Property3
12 43 12 RED Long Rough
43 23 23 Blue Short Smooth
43 90 34 RED Fat Bumpy
Query:
SELECT sum(Quanity1), sum(Quanity2), Property1 FROM Table Group By Property1
Результат:
Quanity1 Quanity2 Property1
43 23 Blue
55 133 Red
Что я хочу сделать, так это предоставить пользователю графический интерфейс, чтобы сделать это, зная, как писать SQL-запросы или любой код. Например, набор списков, в которых они выбирают свойства и количества, которые они хотят просмотреть, и отображается таблица, которая отображает выбранные поля с суммированными количествами. Я также могу позже добавить возможность для пользователя выполнять другие SQL-запросы, такие как действия, такие как фильтрация на основе определенных условий. Кроме того, я знаю, что позже мне нужно будет создавать приятные отчеты на основе этих пользовательских запросов.
Я очень новичок в ADO и .NET в целом. Но я думаю, что лучший способ сделать это - экспортировать мои данные в System.Data.DataTable, а затем создать интерфейс для пользователя, чтобы создать System.Data.DataView, создав для него свойство RowFilter. Хотя, мне не кажется очевидным, как я могу не только фильтровать и сортировать DataTable, но генерировать другую таблицу или представление, которая содержит только определенные столбцы из большой главной таблицы.
В целом это звучит как лучший вариант, или есть другой метод, который я должен рассмотреть? Кто-нибудь есть какие-то конкретные советы или предложения о том, как я должен это реализовать? Я также сомневался, что с LINQ будет легче сделать это.
Обновление
Я ценю предложение использовать Access или другой доступный инструмент, но это действительно не вариант. Доступ слишком сложный для пользователей здесь, чтобы попытаться выяснить, и намного больше, чем мне действительно нужно. Я всегда оставил Access как вариант для продвинутых пользователей. Но я все равно хотел бы настроить базовую функцию запроса, когда пользователь выбирает нужные им столбцы, и программное обеспечение автоматически создает представление/запрос, который выбирает и суммирует соответствующие столбцы.
Помимо того, что проблема заключается в сложении другой проблемы с Access, существует много кликов между изменением чего-то в моей структуре данных и наблюдением за изменением отчета. Я не хочу, чтобы пользователь должен что-то менять, реэкспортировать для доступа, открывать другую программу, а затем открывать отчет, чтобы увидеть эффект от их изменения.
Ответы
Ответ 1
Подумайте о покупке готового инструмента запроса, а не о повторной разработке колеса. Самый дешевый, который мог бы сделать такие вещи, - MS Access или MSQuery в Excel. Более подробно вы можете использовать построитель отчетов (если ваша база данных основана на SQL Server - она предоставляется бесплатно с этим) или стороннего инструмента, такого как Business Objects или Brio.
Если вы можете жить без жесткой интеграции, это намного проще, чем пытаться создать собственный инструмент специальных запросов.
Ответ 2
Я также настоятельно рекомендую готовить - особенно рано. Если позже выяснится, что пользователям действительно нужно написать собственное решение, то обязательно поймите его. Но на раннем этапе я не думаю, что это будет стоить того времени и усилий, которые вы потратите.