C# C-DataGridView和DateTimePicker存在问题
我需要帮助理解我的错误,我使用DataGridView允许以表单形式显示一个表,我想插入使用两个DateTimePicker字段选择日期范围的函数,并使用CERCA按钮启动SELECT语句,但是,我启动程序并尝试在DataGridView字段中进行选择,即使设置了两条SelectCommand指令,也只会出现一条空行。我不明白我错在哪里C# C-DataGridView和DateTimePicker存在问题,c#,select,datagridview,datetimepicker,C#,Select,Datagridview,Datetimepicker,我需要帮助理解我的错误,我使用DataGridView允许以表单形式显示一个表,我想插入使用两个DateTimePicker字段选择日期范围的函数,并使用CERCA按钮启动SELECT语句,但是,我启动程序并尝试在DataGridView字段中进行选择,即使设置了两条SelectCommand指令,也只会出现一条空行。我不明白我错在哪里 public DataGridView_Maria() { InitializeComponent(); } S
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查询(不带参数),该查询执行时不会出错并返回预期的数据?我的意思是对查询字符串中的日期进行硬编码以进行测试。让我们确保其他一切正常。