none
campos VarcharMax en Ado Net RRS feed

  • Pregunta

  • Buenas tardes. Expongo mi Problema que no he podido resolver.

    Primeramente nunca había ocupado campos de Sql Server de tipo varcharMax, ¿por que lo estoy ocupado?, bueno, tengo la necesidad de guardar datos de tipo texto ya que se refiere a datos de observaciones, y lo más probable rebase los 255 posiciones de un campo varchar simple.

    Ahora bien, este información la guardo en un textBox Multiline, de ahí lo quiero guardar en un campo de tipo varcharmax de una tabla, pero todos los demás campos los guarda bien, menos este, ocupo ado net para hacer ya sea el alta o la modificación del registro.

    he intentado de estas 2 formas:

    1.- cmd2.Parameters.Add("@observaciones_generales", SqlDbType.VarChar, -1).Value = txtObservacionesGrales.Text;


    2.- SqlParameter observacionesPara = new SqlParameter("@observaciones_generales", null);
                        observacionesPara.SqlDbType = SqlDbType.VarChar;
                        observacionesPara.Size = -1;
                        observacionesPara.Direction = ParameterDirection.Output;
                        cmd2.Parameters.Add(observacionesPara).Value = txtObservacionesGrales.Text; 

    Por favor, me podrían asesorar sobre el tema?

    muchas gracias.

    sábado, 12 de octubre de 2019 21:03

Respuestas

  • Una observación: el límite de los varchar no es 255. El varchar puede tener cualquier longitud siempre que quepa en el registro. La longitud máxima total del registro es 8000 bytes.

    El parámetro está bien en el caso 1. El caso 2 falla porque Direction no debe ser Output sino Input.

    Si no funciona, tiene que haber un problema en algún otro sitio. La construcción del parámetro está bien como la tienes.

    domingo, 13 de octubre de 2019 8:47
    Moderador

Todas las respuestas

  • Una observación: el límite de los varchar no es 255. El varchar puede tener cualquier longitud siempre que quepa en el registro. La longitud máxima total del registro es 8000 bytes.

    El parámetro está bien en el caso 1. El caso 2 falla porque Direction no debe ser Output sino Input.

    Si no funciona, tiene que haber un problema en algún otro sitio. La construcción del parámetro está bien como la tienes.

    domingo, 13 de octubre de 2019 8:47
    Moderador
  • Buenas tardes Alberto, agradezco la ayuda y orientación; mi ingenuidad no dio más para haber encontrado el error; 

    como me mencionas del primer caso que esta bien ->cmd2.Parameters.Add("@observaciones_generales", SqlDbType.VarChar, -1).Value = txtObservacionesGrales.Text;

    pues no me daba y no me daba, revise campo por campo, de la tabla, tipo de campo y más, luego las sentencias por sentencias de Parameters.Add y no me daba, siempre grababa nulo.

    Antes de decirte dónde estaba el error por parte mía, déjame aclararte con son 122 campos de una tabla que guarda datos de una acta, entre ellas el campo de observaciones que menciono.

    Pues ahí te va el error garrafal que tuve; no quiero echarle la culpa al cansancio que ya tenía y por lo cual recurrí al Foro..... se me olvido poner este campo declarado en la sentencia insert "que barbaridad", por eso no me guardaba nada de este campo aun que tuviera declarado en la sección Parameters.Add.

    INSERT INTO AV01 (CAMPO1, observaciones_generales, ... CAMPO122) VALUES (@CAMPO1, @observaciones_generales, ... @CAMPO122);

    GRACIAS POR LA AYUDA, SALUDOS.

    domingo, 13 de octubre de 2019 23:20