Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C-DataGridView和DateTimePicker存在问题_C#_Select_Datagridview_Datetimepicker - Fatal编程技术网

C# C-DataGridView和DateTimePicker存在问题

C# C-DataGridView和DateTimePicker存在问题,c#,select,datagridview,datetimepicker,C#,Select,Datagridview,Datetimepicker,我需要帮助理解我的错误,我使用DataGridView允许以表单形式显示一个表,我想插入使用两个DateTimePicker字段选择日期范围的函数,并使用CERCA按钮启动SELECT语句,但是,我启动程序并尝试在DataGridView字段中进行选择,即使设置了两条SelectCommand指令,也只会出现一条空行。我不明白我错在哪里 public DataGridView_Maria() { InitializeComponent(); } S

我需要帮助理解我的错误,我使用DataGridView允许以表单形式显示一个表,我想插入使用两个DateTimePicker字段选择日期范围的函数,并使用CERCA按钮启动SELECT语句,但是,我启动程序并尝试在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按钮显示设置的日期。好极了但我还是不知道为什么数据采集器会给他带来麻烦

这是修改后的代码:

    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();
    }
}
}

请尝试以下值属性,而不是DateTimePicker的文本属性:

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

我刚试过,但问题仍然存在。无论如何谢谢你!当我删除单引号并尝试从sdf.Fill sd;行中的错误中搜索程序时;。这是错误消息:System.Data.SqlClient.SqlException:“将字符串转换为日期或时间时转换失败”。@Nicolarmarchesan说得很清楚,您现在使用的是值而不是文本,并且删除了单引号?没错,我按照您的建议修改了代码,它给了我这个错误。@Nicolarmarchesan好的。。。我认为这个新问题可能是由于区域/文化不匹配造成的。您能否编辑您的问题并添加一个SQL查询(不带参数),该查询执行时不会出错并返回预期的数据?我的意思是对查询字符串中的日期进行硬编码以进行测试。让我们确保其他一切正常。