Основываясь на ответах на этот вопрос о динамическом доступе к таблицам , я решил сделать пару шагов назад и получить несколько советов по более широкой картине.
Я пересматриваю проект базы данных приложения Windows Forms, которое переписываю для Интернета с использованием ASP.NET. Кроме того, я перенес нашу базу данных на Sql Server, чтобы он мог обрабатывать больше трафика, поскольку база данных Access уже перегружена. Итак, в результате того, что я понял, на что способен SQL Server, я пересмотрел свои решения по проектированию базы данных и их влияние на мой дизайн пользовательского интерфейса.
В настоящее время интерфейс Windows отображает список последних кодов:
02691 AFF1
32391 Lot# 23
и т. Д.
Для каждого кода в таблице Productions есть запись, которая начинается с:
ProductionCode varchar(80),
Template varchar(50),
...
Шаблон представляет собой одну из нескольких таблиц, а также внешний ключ в определениях полей шаблона. Вся эта информация используется для динамического построения DataGrid, начиная с кода.
Существует таблица ScoreField, которая представляет все поля во всех шаблонах, кроме ProductionCode (который во всех них является внешним ключом).
ScoreField
Template varchar(50)
Field varchar(50)
Formatting varchar(50) // This is a .NET style formatting string, say 0.00 or ##
...
Затем есть сами таблицы шаблонов, которые содержат код производства, время для каждого теста и любые данные, собранные тестом.
Итак, чтобы создать свою сетку данных, я начинаю с
SELECT * FROM ProductionRun WHERE ProductionCode = @Code
На самом деле, я просто получаю один результат или прекращаю процесс, если не получаю никаких результатов.
Где код - это строка кода, выбранная пользователем (используя раскрывающийся список, а не что-либо уязвимое для инъекции)
Тогда я делаю:
SELECT * FROM ScoreField WHERE Template = @Template
Где @Template на самом деле, возвращено значение поля Template для одной записи ProductionRun.
Тогда я делаю:
SELECT * FROM @Template WHERE ProductionCode = @Code
Но на самом деле, я просто объединяю имя шаблона, полученное в первой части.
и затем я использую результат из ScoreField, чтобы добавить столбцы для каждого совпадающего результата и настроить форматирование и т. Д.
Но, конечно, в результате выполнения всего этого во время выполнения я не могу использовать привязку данных и вынужден программно заполнять все свои данные.
Итак, с этим пересмотром базы данных я ищу другой, лучший подход. У меня есть данные в разных таблицах, и я хочу применить к ним форматирование и иметь возможность делать все это в одном интерфейсе вместо того, чтобы заставлять пользователя угадывать, в каком шаблоне находятся его данные. добавляйте шаблоны, не перегружая систему.
Очевидно, что это не простой вопрос программирования, а скорее вопрос лучших практик, но я искал вдохновение и / или примеры, чтобы начать меня другим путем.