Member 13858616 Ответов: 1

Динамически создайте таблицу из значений представления сетки. (С#)


Я проделал некоторые внутренние манипуляции в коде,и теперь у меня есть представление сетки с определенным количеством значений,таких как имя,дата дня1, день2, день3...день31.
Итак, предположим, что у меня есть 10 строк данных. Теперь я хочу динамически создать таблицу с этими столбцами в качестве заголовков и остальными строками в качестве табличных данных, а затем сохранить таблицу с именем месяца в базе данных.
Обратите внимание, что даты будут меняться в зависимости от месяца.

Что я уже пробовал:

Я понятия не имею, как это сделать. Пожалуйста, помогите мне с некоторыми идеями.

Maciej Los

Можете ли вы быть более конкретным и предоставить более подробную информацию?

1 Ответов

Рейтинг:
0

#realJSOP

Создайте в базе данных таблицу, содержащую нужную схему. Он не должен содержать никаких данных. (Разрешение нулевых значений будет соответствовать месяцам, которые не имеют 31 дня.)

CREATE TABLE SCHEMA_TEMPLATE
(
    NAME nvarchar(255) NULL,
    Day1 DATE NULL,
    ...
    Day31 DATE NULL
) ON PRIMARY;


Затем напишите сохраненный процесс, который создаст нужную таблицу данных, имеющую ту же схему, что и таблица SCHEMA_TEMPLTE. Передайте ему нужное имя таблицы (например, "May2018"):

CREATE PROCEDURE dbo.sp_CreateTableForMonth
    @tableName nvarchar(50)
AS
BEGIN
    -- this query will duplicate the schema of the SCHEMA_TEMPLATE table.
    DECLARE @query nvarchar(MAX) =
    'SELECT TOP 0 * INTO '+@tableName+' FROM dbo.SCHEMA_TEMPLATE';
    EXEC sp_executesql @query;
END


После этого очень просто поместить ваши данные в таблицу из вашего кода.

===================================

Я бы также вернулся к вашей схеме. Мне кажется, что может быть лучший способ представления данных, например, просто поместить все данные в одну таблицу и использовать MERGE команда для обновления таблицы. Это лучше, чем иметь один стол на каждый месяц...


Member 13858616

Привет Джон,

большое вам спасибо за ваше решение... Я был бы признателен, если бы вы объяснили последний случай, о котором вы упомянули, - это использование слияния?
Чтобы у меня был только один правильный столик.. Так что не могли бы вы поделиться своей идеей по этому поводу?

Member 13858616

На самом деле имена столбцов day1,day2,day3...day3 не являются постоянными. Он отличается для каждого месяца, как 1/02/2018(понедельник), 2/02/2018(вторник)...и т.д...
Таким образом, эти значения будут автоматически всплывать в моих представлениях сетки в соответствии с моим кодом. Я просто хотел создать таблицу с этими столбцами(столбцами моего представления сетки). Поэтому я не просто хочу создать таблицу динамически, я хочу создать таблицу динамически с полями, взятыми из моего представления сетки.