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

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

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

Пример:

Таблица:

Quanity1    Quanity2    Quanity3    Property1   Property2   Property3
12          43            12           RED        Long      Rough
43        23            23          Blue       Short     Smooth
43        90            34           RED        Fat     Bumpy

Запрос:

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 заключается в том, что между изменением чего-либо в моей структуре данных и просмотром изменения в отчете очень много щелчков мышью. Я не хочу, чтобы пользователю приходилось что-то менять, повторно экспортировать для доступа, открывать другую программу, а затем открывать отчет, чтобы увидеть эффект от их изменения.


person Eric Anastas    schedule 06.05.2009    source источник


Ответы (2)


Лучше купить готовый инструмент запросов, чем изобретать колесо заново. Самый дешевый, который может делать такие вещи, - это MS Access или MSQuery в Excel. Более подробно вы можете использовать Report Builder (если ваша база данных основана на SQL Server - он поставляется бесплатно) или сторонний инструмент, такой как Business Objects или Brio.

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

person ConcernedOfTunbridgeWells    schedule 06.05.2009

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

person Bork Blatt    schedule 06.05.2009