none
almacenar varias cadenas de texto en un mismo campo RRS feed

  • Pregunta

  • buenas dias 

    tengo una tabla que muestras la siguiente info 

    ENTRADA | FECHA | ENTRADA | SALIDA | ENTRADA COMIDA | SALIDA COMIDA | COMENTARIOS

    varchar    |date     | time         | time     | time                      | time                   | varchar<-- son los tipos de dato de las columnas

    julio         |2015-08-10| 8:00 | 6:00 | 1:00 | 2:00| aqui viene mi problema

    si julio entro a las 8 y puso como comentario "no hay tranporte dia festivo"

    se almacena pero si a las 2 que hizo registro y comenta "comi fuera de la oficina" el primer comentario se borra 

    como hago una cadena de update para que me almacene los dos textos en el mismo campo llamado comentatios cabe mencionar que si se requiere tendra 4 comentarios un solo registro de antemano muchas gracias por su ayuda

    martes, 11 de agosto de 2015 23:31

Respuestas

  • Sí, la cadena de consulta está mal construida:

            public void agregarchecada(string usuario, DateTime fecha, string hora, string nota, string ip, string nombredelamaquina)
            {
                string agregarchecadareporte = @"update T_ReportedeChecadas set entrada ='" + hora + "', ip='" + ip + "',nota =ISNULL(nota + ' ', '') + '" + nota + "',nombredelamaquina ='" + nombredelamaquina + "' where Nombre = '" + usuario + "' and fecha = '" + fecha + "'";
                SqlCommand guardarchecada = new SqlCommand(agregarchecadareporte, conexion);
                conexion.Open();
                guardarchecada.ExecuteNonQuery();
                conexion.Close();
            }
    

    En cualquier caso es conveniente que te acostumbres a utilizar parámetros. Las razones para usarlos son múltiples: seguridad, rendimiento, claridad de código...

     

    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    miércoles, 12 de agosto de 2015 8:11

Todas las respuestas

  • Hola julio cesar viveros,

    Aunque no sería del todo correcto porque el comentario no menciona a que suceso se refiere. Si ello no importa entonces sólo queda que concatenes el valor anterior mas el nuevo valor.

    UPDATE MiTable SET Comentario = ISNULL(Comentario + ' ', '') + @Comentario WHERE (id = @id)

    Como te das cuenta, concateno lo que tenia el campo Comentario con el nuevo valor que contiene el parámetro @Comentario

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ

    miércoles, 12 de agosto de 2015 0:14
  • hola

    >>como hago una cadena de update para que me almacene los dos textos en el mismo campo

    no, nunca tomes ese camino es una pesimo diseño de la base de datos

    tienes que definir una tabla separada donde guardfar los comentarios, del estilo

    Tabla1 (tabla) //no se el nombre por eso le puse Tabla1
    Tabla1Id   PK
    Entrada
    Fecha
    salida
    //otros campos
    
    Comentarios (tabla)
    ComentarioId   PK
    Tabla1Id   FK
    Comentarios


    algo que no veo es donde defnes la key de la tabla

    como veras cada comentario es un insert en su tabla y se relacina con al entrada de ese dia

    recomendacion NUNCA definas campos compuestos, no es recomendado segun la normalizacion de base de datos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 12 de agosto de 2015 1:14
  • pongo mi metodo de agregado porque me marca error al adaptar tu solucion, pero se que tu tienes la respuesta correcta

    public void agregarchecada(string usuario, DateTime fecha, string hora, string nota, string ip, string nombredelamaquina)
            {
                string agregarchecadareporte = @"update T_ReportedeChecadas set entrada ='" + hora + "', ip='" + ip + "',nota =ISNULL(nota '"+','+"')'" + nota + "',nombredelamaquina ='" + nombredelamaquina + "' where Nombre = '" + usuario + "' and fecha = '" + fecha + "'";
                SqlCommand guardarchecada = new SqlCommand(agregarchecadareporte,conexion);
                conexion.Open();
                guardarchecada.ExecuteNonQuery();
                conexion.Close();
            } 

    de antemano gracias!!

    miércoles, 12 de agosto de 2015 6:32
  • Sí, la cadena de consulta está mal construida:

            public void agregarchecada(string usuario, DateTime fecha, string hora, string nota, string ip, string nombredelamaquina)
            {
                string agregarchecadareporte = @"update T_ReportedeChecadas set entrada ='" + hora + "', ip='" + ip + "',nota =ISNULL(nota + ' ', '') + '" + nota + "',nombredelamaquina ='" + nombredelamaquina + "' where Nombre = '" + usuario + "' and fecha = '" + fecha + "'";
                SqlCommand guardarchecada = new SqlCommand(agregarchecadareporte, conexion);
                conexion.Open();
                guardarchecada.ExecuteNonQuery();
                conexion.Close();
            }
    

    En cualquier caso es conveniente que te acostumbres a utilizar parámetros. Las razones para usarlos son múltiples: seguridad, rendimiento, claridad de código...

     

    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    miércoles, 12 de agosto de 2015 8:11