[英]Error: 'Operand type clash: date is incompatible with int ' on date type
[英]Fill Datagrid with Sql Query using Date " 'Operand type clash: date is incompatible with int''
我是編程新手,從C#(Visual Studio 2017 CE)開始。
我正在編寫應用程序並使用DataGrid
。 我正在嘗試使用對基於C#服務的數據庫(mdf文件)的查詢來填充DataGrid
。
當我運行應用程序並嘗試查詢語句時,出現此錯誤:
操作數類型沖突:日期與int不兼容
在SqlDataReader
行。
我已經在SQL Server中測試了SQL Select
語句,並且可以在其中運行。 我已經閱讀了與錯誤相關的多個問題,但是由於我是編程的新手,因此幾乎所有答案都難以理解,在此先感謝您的理解
using (SqlConnection conn = Conexion.Conectado())
{
string strsql = "SELECT dbo.Personas.Nombres, dbo.Personas.Apellidos, dbo.Prestamo.prestamo_id, dbo.Prestamo.fecha, dbo.Prestamo.Monto_prestamo, dbo.Prestamo.Ruta, dbo.Prestamo.Quotas, dbo.Prestamo.Balance, dbo.Registro_pagos.Monto_pago, dbo.Registro_pagos.Mora FROM dbo.Personas INNER JOIN dbo.Prestamo ON dbo.Personas.Persona_id = dbo.Prestamo.fk_Persona_id INNER JOIN dbo.Registro_pagos ON dbo.Prestamo.prestamo_id = dbo.Registro_pagos.fk_prestamo_id where dbo.Registro_pagos.fecha_pago = " + Dtp_fecha_cuadre.Text;
SqlCommand cmd = new SqlCommand(strsql, conn);
cmd.CommandType = CommandType.Text;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string Nombres = dr["Nombres"].ToString();
string Apellidos = dr["Apellidos"].ToString();
string num_prestamo = dr["prestamo_id"].ToString();
DateTime fecha = Convert.ToDateTime(dr["fecha"].ToString());
double Monto_prestamo = Convert.ToDouble(dr["Monto_prestamo"].ToString());
string Codigo_ruta = dr["Ruta"].ToString();
string Quotas = dr["Quotas"].ToString();
double Balance = Convert.ToDouble(dr["Balance"].ToString());
double Monto_pago = Convert.ToDouble(dr["Monto_pago"].ToString());
double Mora = Convert.ToDouble(dr["Mora"].ToString());
Dgv_cuadre_rutas.Rows.Add(Nombres, Apellidos, num_prestamo, fecha,Monto_prestamo , Codigo_ruta, Quotas, Balance, Monto_pago, Mora);
}
conn.Close();
}
使用SQL DataAdapter代替它更容易並且將擺脫錯誤
using (SqlConnection conn = Conexion.Conectado())
{
string strsql = "SELECT dbo.Personas.Nombres, dbo.Personas.Apellidos, dbo.Prestamo.prestamo_id, dbo.Prestamo.fecha, dbo.Prestamo.Monto_prestamo, dbo.Prestamo.Ruta, dbo.Prestamo.Quotas, dbo.Prestamo.Balance, dbo.Registro_pagos.Monto_pago, dbo.Registro_pagos.Mora FROM dbo.Personas INNER JOIN dbo.Prestamo ON dbo.Personas.Persona_id = dbo.Prestamo.fk_Persona_id INNER JOIN dbo.Registro_pagos ON dbo.Prestamo.prestamo_id = dbo.Registro_pagos.fk_prestamo_id where dbo.Registro_pagos.fecha_pago = " + Dtp_fecha_cuadre.Text;
SqlCommand cmd = new SqlCommand(strsql, conn);
cmd.CommandType = CommandType.Text;
SqlDataAdapter adapter = new SqlDataAdapter(strsql, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
Dgv_cuadre_rutas.DataSource = dt;
conn.Close();
}
我能夠解決該錯誤! 該錯誤首先發生,因為在我的原始查詢中,我使用的是“ = = + Dtp_fecha_cuadre.Text;”,該函數以int格式發送數據,因此我不得不將其更改為“ --like'” + Dtp_fecha_cuadre.Value.ToString ()+“'”;,-,但此時還沒有填滿數據網格,然后我想到了一個想法,即發送的日期字符串格式不正確,並將查詢調整為“喜歡' “ + Dtp_fecha_cuadre.Value.ToString(” yyyy-MM-dd“)+”'“;這樣就解決了我的問題,感謝所有幫助我的工作–恩格爾1分鍾前編輯
using (SqlConnection conn = Conexion.Conectado())
{
string strsql = "SELECT dbo.Personas.Nombres, dbo.Personas.Apellidos, dbo.Prestamo.prestamo_id, dbo.Prestamo.fecha, dbo.Prestamo.Monto_prestamo, dbo.Prestamo.Ruta, dbo.Prestamo.Quotas, dbo.Prestamo.Balance, dbo.Registro_pagos.Monto_pago, dbo.Registro_pagos.Mora FROM dbo.Personas INNER JOIN dbo.Prestamo ON dbo.Personas.Persona_id = dbo.Prestamo.fk_Persona_id INNER JOIN dbo.Registro_pagos ON dbo.Prestamo.prestamo_id = dbo.Registro_pagos.fk_prestamo_id where dbo.Registro_pagos.fecha_pago like '" + Dtp_fecha_cuadre.Value.ToString("yyyy-MM-dd") +"'";
SqlCommand cmd = new SqlCommand(strsql, conn);
cmd.CommandType = CommandType.Text;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string Nombres = dr["Nombres"].ToString();
string Apellidos = dr["Apellidos"].ToString();
string num_prestamo = dr["prestamo_id"].ToString();
DateTime fecha = Convert.ToDateTime(dr["fecha"].ToString());
double Monto_prestamo = Convert.ToDouble(dr["Monto_prestamo"].ToString());
string Codigo_ruta = dr["Ruta"].ToString();
string Quotas = dr["Quotas"].ToString();
double Balance = Convert.ToDouble(dr["Balance"].ToString());
double Monto_pago = Convert.ToDouble(dr["Monto_pago"].ToString());
double Mora = Convert.ToDouble(dr["Mora"].ToString());
Dgv_cuadre_rutas.Rows.Add(Nombres, Apellidos, num_prestamo, fecha, Monto_prestamo, Codigo_ruta, Quotas, Balance, Monto_pago, Mora);
}
conn.Close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.