none
conversion failed when converting the varchar................... RRS feed

  • Pregunta

  • Aiss todo en la programación son problemas jeje.
    El mio es el siguiente estoy programando una aplicación en c# con visual studio 2005 y sql server.
    Pues bien tengo el siguiente problema cuando estoy ejecutando las sentencias sql para insertar registros en la base de datos me da el siguiente fallo

    "conversion failed when converting
    varchar value "ac01" to data type int"


    y no estoy conviertiendolo a entero en ningun lado os muestro el codigo



    private void btnguardar_Click(object sender, EventArgs e)
            {
                if (ctCliente.Text.Length == 0) btnbuscar.PerformClick();
                //dsPedidoTableAdapters.pedidoTableAdapter adaptador = new nuevoProy.dsPedidoTableAdapters.pedidoTableAdapter();
               // dsPedido datos = new dsPedido();
                //adaptador.Fill(datos.pedido);
                //Añadir el pedido a la tabla pedidos desde "datos"
                //string pedido = npedidobox.Text;

                double coste = 0;


                //int pedido = ;
                //dsPedido.articulosRow clave = datos.articulos.cod_articuloColumn;
               
                //DateTime fecha = DateTime.Now;
                bool servido = false;

                //Actualizar la base de datos desde "datos"
               // adaptador.Update(datos);
                //bool servido = false;

                System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(@"Data Source=milareu\sqlexpress;AttachDbFilename=C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data\primerabd.mdf;Database=primerabd;Trusted_Connection=Yes;");
                //System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
                System.Data.SqlClient.SqlCommand cmdo = new System.Data.SqlClient.SqlCommand();
                System.Data.SqlClient.SqlTransaction objTransaction = null;

                try
                {
                    // Objetos de conexión y comando

                    conn.Open();
                    objTransaction = conn.BeginTransaction();

                    // Estableciento propiedades
                    cmdo.Connection = conn;
                    cmdo.Transaction = objTransaction;
                    for (int i = 0; i <= pedidoDataGridView.RowCount-1; i++)
                    {
                        coste = Convert.ToDouble(pedidoDataGridView.RowsIdea.Cells[2].Value);
                        ctimporte.Text = coste.ToString();
                        cmdo.CommandText = "INSERT INTO pedido VALUES (@cod_pedido,@coste,@estado)";

                        cmdo.Parameters.Add("@cod_pedido", System.Data.SqlDbType.NVarChar);

                        cmdo.Parameters.Add("@coste", System.Data.SqlDbType.NVarChar);
                        cmdo.Parameters.Add("@estado", System.Data.SqlDbType.NVarChar);


                        cmdo.Parameters["@cod_pedido"].Value = int.Parse(codpedido.Text);

                        cmdo.Parameters["@coste"].Value = coste;
                        cmdo.Parameters["@estado"].Value = servido;
                        cmdo.ExecuteNonQuery();


                        cmdo.CommandText = "INSERT INTO lineapedido VALUES (@cod_articulo,@cod_pedido,@cod_lineapedido,@importe,@cantidad)";

                        cmdo.Parameters.Add("@cod_articulo", System.Data.SqlDbType.NVarChar);
                        //cmdo.Parameters.Add("@cod_pedido", System.Data.SqlDbType.NVarChar);
                        cmdo.Parameters.Add("@cod_lineapedido", System.Data.SqlDbType.NVarChar);
                        cmdo.Parameters.Add("@importe", System.Data.SqlDbType.NVarChar);
                        cmdo.Parameters.Add("@cantidad", System.Data.SqlDbType.NVarChar);


                       cmdo.Parameters["@cod_articulo"].Value =pedidoDataGridView.RowsIdea.Cells[1].Value.ToString(); //es aquí donde me da el fallo
                        //cmdo.Parameters["@cod_pedido"].Value = codpedido.Text;
                        cmdo.Parameters["@cod_lineapedido"].Value = int.Parse(pedidoDataGridView.RowsIdea.Cells[0].Value.ToString());
                        cmdo.Parameters["@importe"].Value = pedidoDataGridView.RowsIdea.Cells[3].Value;//importe de la linea de pedido;
                        cmdo.Parameters["@cantidad"].Value = pedidoDataGridView.RowsIdea.Cells[2].Value;




                        cmdo.ExecuteNonQuery();
                      



    Decir que en la base de datos tengo cod_articulo como un nvarchar en todas las tablas, así que no encuentro el fallo por ningun lado, espero que me podais ayudar , muchas gracias por adelantado Wink


    jueves, 5 de julio de 2007 8:36

Respuestas

Todas las respuestas

  • A mí personalmente me llama la atención la siguiente línea:

     

    Code Snippet
    cmdo.Parameters["@cod_pedido"].Value = int.Parse(codpedido.Text);

     

     

    Si defines el parámetro como nvarchar, pq lo parseas a integer?

     

    Salud!

    jueves, 5 de julio de 2007 13:38
    Moderador
  • Cambiado está , realmente el cod_pedido es un entero, lo que hice fue cambiarlo a int , pero donde me da el error es en cod_articulo, que es un nvarchar y no lo convierto en ningun lado a int, sin embargo me da ese error, que puse antes Wink
    viernes, 6 de julio de 2007 8:26