Можем ли мы вставить некоторые данные вместе с запросом на вставку значения в c # winform - PullRequest
0 голосов
/ 05 октября 2019

Я хочу вставить дату и месяц (в двух указателях datetime) вместе с запросом выбора значения вставки.

У меня есть пять столбцов в моей таблице invoice

Student_id, Amount, Fee_description, issue_date, month

Я могу вставить значения для первых трех столбцов, но оставшиеся два являются нулевыми, для которых я не знаю, куда поместить значение datetimepicker ??

Я беру datatimepicker для даты и месяца в режиме конструктораформа

insert into invoice (Student_id, Amount, Fee_description, issue_date, month)
    select 
        student.Student_id, 
        Fee.Fee_Amount, Fee.fee_type
    from 
        student
    join 
        parent on student.father_nic = parent.father_nic
    join 
        allocate_class on student.Student_id = allocate_class.Student_id
    join 
        class on class.class_id = allocate_class.class_id
    join 
        session on allocate_class.session_id = session.session_id
    join 
        Fee on class.class_id = Fee.class_id
    where 
        session.session_id = 1
        and Fee.fee_type = 'Tution Fee'
        and student.status = 'active'

Где добавить эти два значения datetimpicker в запросе выше?

1 Ответ

1 голос
/ 05 октября 2019

Конечно. Это выглядело бы примерно так:

var cmd = new SqlCommand("insert into invoice (
    Student_id,
Amount,
Fee_description,
issue_date,
month
)
select student.Student_id
 , Fee.Fee_Amount
 , Fee.fee_type

 , @issDat
 , @mon

  from ...", "conn str here");


cmd.Parameters.AddWithValue("@issDat", issueDateDateTimePicker.Value);
cmd.Parameters.AddWithValue("@mon", monthDateTimePicker.Value);

Я использовал AddWithValue, чтобы быстро объяснить концепцию Google для блога под названием «Можем ли мы прекратить использовать AddWithValue уже» для долгого обсуждения того, как отойти отэто (это разумно в этом контексте, поскольку оно не используется для фильтрации), но сейчас я пытаюсь связать концепцию:

Оператор sql может принять фиксированное значение от вас:

SELECT 'hello' FROM table

Он также может принимать фиксированный параметр, который вы предоставляете:

SELECT @pHello FROM table

Следовательно, добавление параметров и их сохранение с фиксированными значениями из ваших дневных сборщиков (или datetime.Now или чего-либо другого) в порядке, и чтоВы должны делать вставку фиксированных значений, используя инструкцию стиля INSERT ... SELECT

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

...