none
Aplicar stringformat a una lista genérica. RRS feed

  • Pregunta

  • Hola a todos:

    Es posible poder aplicar stringFormat a una lista genérica.

    Os pongo el ejemplo que pretendo utilizar:

     Un elemento de la lista

    lst.Add(New ActualizarDatosTablaVarios(ComprasTotales(0), ComprasTotales(1), ComprasTotales(2), ComprasTotales(3), ComprasTotales(4), ComprasTotales(5), ComprasTotales(6), ComprasTotales(7), ComprasTotales(8), ComprasTotales(9), ComprasTotales(10), ComprasTotales(11), empresa, "016"))

    El strinfFormat que utilizo sin lista y que quisiera aplicar a la anterior.

    For i = 0 To valor
         .Add(Configuracion.CreateParameter(cmd, String.Format("@ejer{0}", i), ComprasTotales(i))
    Next

    Función update de la lista

    Public Function Update() As String
    
            ' Devolver una cadena con los valores de los campos encerrados entre comillas simples.
            Return String.Format("UPDATE Varios Set Ejer_01='{0}', Ejer_02='{1}', Ejer_03='{2}', Ejer_04='{3}', Ejer_05='{4}', Ejer_06='{5}', Ejer_07='{6}', Ejer_08='{7}', Ejer_09='{8}', Ejer_10='{9}', Ejer_11='{10}',Ejer_12='{11}' WHERE Cod_Empresa='{12}' AND Orden='{13}'",
                                m_ejer1, m_ejer2, m_ejer3, m_ejer4, m_ejer5, m_ejer6, m_ejer7, m_ejer8, m_ejer9, m_ejer10, m_ejer11, m_ejer12, m_empresa, m_orden)
    
        End Function

    Todo ello es para poder tener el código de la lista más simplificado y no tener que estar haciendo esas largas líneas.

    Un cordial saludo.

    Gemma


    martes, 6 de septiembre de 2016 5:11

Respuestas

  • "gemma_campillo" preguntó:

    > Es posible poder aplicar stringFormat a una lista genérica.
    >
    > Os pongo el ejemplo que pretendo utilizar:
    >
    >  Un elemento de la lista
    >
    >  lst.Add(New ActualizarDatosTablaVarios(
    >        ComprasTotales(0), ComprasTotales(1), ComprasTotales(2),
    >        ComprasTotales(3), ComprasTotales(4), ComprasTotales(5),
    >        ComprasTotales(6), ComprasTotales(7), ComprasTotales(8),
    >        ComprasTotales(9), ComprasTotales(10), ComprasTotales(11), empresa, "016")
    >  )

    Si te refieres a pasarle al constructor de la clase ActualizarDatosTablaVarios el valor devuelto por el método String.Format, que sería un valor alfanumérico (String), de entrada te contesto que no es posible, porque el constructor de esa clase requiere que se le pasen 14 parámetros de entrada, y si le pasas el valor de String.Format, le estarías pasando un único valor.

    Imagina que el valor resultante del método String.Format fuera éste:

        Dim valores As String = String.Format ( ... lo que sea ...)
    
        ' Añadimos un nuevo elemento a la lista genérica
        lst.Add(New ActualizarDatosTablaVarios(valores))

    ¿Observas la diferencia? Obviamente, el compilador de Visual Basic .net te marcará el oportuno error en tiempo de diseño porque el constructor New de la clase ActualizarDatosTablaVarios espera 14 parámetros, y tu le estás pasando solamente uno.

    Ahora bien, si el constructor de esa clase admitiera un único parámetro de entrada con el tipo de dato String, otro gallo cantaría. En este supuesto, tendrías que pasarle la cadena alfanumérica resultante del método String.Format, pero teniendo en cuenta que los valores de los 14 parámetros tienen que estar separados por algún carácter delimitador, como puede ser una coma, para que posteriormente pudieras obtener una matriz de valores alfanuméricos mediante el método String.Split. Esos elementos individuales de la matriz son los que posteriormente tienes que asignar a los respectivos campos de la clase ActualizarDatosTablaVarios desde su propio constructor (el procedimiento Sub New). ¿Me he explicado? ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.




    martes, 6 de septiembre de 2016 8:45
    Moderador

Todas las respuestas

  • "gemma_campillo" preguntó:

    > Es posible poder aplicar stringFormat a una lista genérica.
    >
    > Os pongo el ejemplo que pretendo utilizar:
    >
    >  Un elemento de la lista
    >
    >  lst.Add(New ActualizarDatosTablaVarios(
    >        ComprasTotales(0), ComprasTotales(1), ComprasTotales(2),
    >        ComprasTotales(3), ComprasTotales(4), ComprasTotales(5),
    >        ComprasTotales(6), ComprasTotales(7), ComprasTotales(8),
    >        ComprasTotales(9), ComprasTotales(10), ComprasTotales(11), empresa, "016")
    >  )

    Si te refieres a pasarle al constructor de la clase ActualizarDatosTablaVarios el valor devuelto por el método String.Format, que sería un valor alfanumérico (String), de entrada te contesto que no es posible, porque el constructor de esa clase requiere que se le pasen 14 parámetros de entrada, y si le pasas el valor de String.Format, le estarías pasando un único valor.

    Imagina que el valor resultante del método String.Format fuera éste:

        Dim valores As String = String.Format ( ... lo que sea ...)
    
        ' Añadimos un nuevo elemento a la lista genérica
        lst.Add(New ActualizarDatosTablaVarios(valores))

    ¿Observas la diferencia? Obviamente, el compilador de Visual Basic .net te marcará el oportuno error en tiempo de diseño porque el constructor New de la clase ActualizarDatosTablaVarios espera 14 parámetros, y tu le estás pasando solamente uno.

    Ahora bien, si el constructor de esa clase admitiera un único parámetro de entrada con el tipo de dato String, otro gallo cantaría. En este supuesto, tendrías que pasarle la cadena alfanumérica resultante del método String.Format, pero teniendo en cuenta que los valores de los 14 parámetros tienen que estar separados por algún carácter delimitador, como puede ser una coma, para que posteriormente pudieras obtener una matriz de valores alfanuméricos mediante el método String.Split. Esos elementos individuales de la matriz son los que posteriormente tienes que asignar a los respectivos campos de la clase ActualizarDatosTablaVarios desde su propio constructor (el procedimiento Sub New). ¿Me he explicado? ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.




    martes, 6 de septiembre de 2016 8:45
    Moderador
  • Hola maestro:

    Ya me parecía a mi por lo que he estado probado que era una misión complicada.

    Lo dejo como está que funciona muy bien.

    Maestro gracias como siempre por tus someras y didácticas explicaciones.

    Recibe un fuerte abrazo de tu amiga.

    Gemma

    martes, 6 de septiembre de 2016 9:18