C# - проблема с DataGridView и DateTimePicker - PullRequest
0 голосов
/ 11 марта 2020

Мне нужна помощь в понимании, где я неправ, я использую DataGridView, чтобы разрешить отображение таблицы в форме, и я хотел вставить функцию выбора диапазона дат с двумя полями DateTimePicker и запустить Оператор SELECT с кнопкой «CERCA», когда, однако, я запускаю программу и пытаюсь сделать выбор в поле DataGridView, появляется только пустая строка, даже если я установил две инструкции SelectCommand. Я не понимаю, где я ошибаюсь.

    public DataGridView_Maria()
    {
        InitializeComponent();
    }
    SqlConnection conn = new SqlConnection("Data Source=192.168.0.51;Initial 
    Catalog=Archivio_Stipendi;User ID=sa;Password=NI2000ma;");

    private void CERCA_Button_Click(object sender, EventArgs e)
    {
        conn.Open();
        'SqlDataAdapter sdf = new SqlDataAdapter(@"SELECT GIORNO, RIPOSO, ORE_LAVORO, COMPENSO_LAVORO FROM [dbo].[MARIA_VARAVALLO] WHERE GIORNO BETWEEN '@DA_GIORNO' AND '@A_GIORNO';", conn);'

        sdf.SelectCommand.Parameters.AddWithValue("@DA_GIORNO", Da_Mar_DTP.Text);
        sdf.SelectCommand.Parameters.AddWithValue("@A_GIORNO", A_Mar_DTP.Text);

        DataTable sd = new DataTable();
        sdf.Fill(sd);
        DataGridView_Mar.DataSource = sd;

        conn.Close();
    }
}

Я только что внес изменение согласно вашему совету, и, устанавливая диапазон дат непосредственно из запроса, DataGridView работает, нажимая кнопку "CERCA" Кнопка отображает установленную дату. Fantasti c! Но я до сих пор не знаю, почему DataTimePicker доставляет ему проблемы ...

Это модифицированный код:

    public DataGridView_Maria()
    {
        InitializeComponent();
    }
    SqlConnection conn = new SqlConnection("Data Source=192.168.0.51;Initial Catalog=Archivio_Stipendi;User ID=sa;Password=NI2000ma;");
    private void CERCA_Button_Click(object sender, EventArgs e)
    {
        conn.Open();
        SqlDataAdapter sdf = new SqlDataAdapter(@"SELECT GIORNO, RIPOSO, ORE_LAVORO, COMPENSO_LAVORO FROM [dbo].[MARIA_VARAVALLO] WHERE GIORNO BETWEEN 'Lunedì 09 Marzo 2020' AND 'Lunedì 09 Marzo 2020';", conn);
        DataTable sd = new DataTable();
        sdf.Fill(sd);
        DataGridView_Mar.DataSource = sd;

        conn.Close();
    }
}

}

1 Ответ

0 голосов
/ 11 марта 2020

Вместо Text свойств DateTimePicker (s), попробуйте свойства Value, например:

sdf.SelectCommand.Parameters.AddWithValue("@DA_GIORNO", Da_Mar_DTP.Value);
sdf.SelectCommand.Parameters.AddWithValue("@A_GIORNO", A_Mar_DTP.Value);

Редактировать ... Я думаю, что вы ' Также необходимо удалить ' (одинарные кавычки) вокруг параметров в запросе:

WHERE GIORNO BETWEEN '@DA_GIORNO' AND '@A_GIORNO'

… становится:

WHERE GIORNO BETWEEN @DA_GIORNO AND @A_GIORNO
...