Разрешение пользователю создавать пользовательский запрос таблицы

Я пишу программу, которая генерирует одну большую таблицу информации. Таблица состоит из двух типов столбцов, столбцов, содержащих количества, и столбцов, которые содержат свойства. Количества - это числовые значения, которые можно суммировать, свойства - это качественные значения, которые определяют значения количества.

Если данные находятся в таблице в базе данных, я могу написать запрос, который выбирает конкретные свойства и количества и суммирует величины, которые имеют одинаковое значение для выбранных свойств.

Пример:

Таблица:

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

Я также настоятельно рекомендую готовить - особенно рано. Если позже выяснится, что пользователям действительно нужно написать собственное решение, то обязательно поймите его. Но на раннем этапе я не думаю, что это будет стоить того времени и усилий, которые вы потратите.