none
Uso de Parameters de Campos en el Fill de un Adaptador con "Like" RRS feed

  • Pregunta

  • Hola a todos/as.

    Estoy intentando llenar un DataSet a partir de un adaptador mediante un Fill con Parámeters al estilo "campo = @Parametro", pero con la necesidad de buscar una parte del mismo, lo que en un Select normal sería "campo Like 'Valor%'" y la verdad es que no se como hacerlo, ya que probando con "campo Like @Parametro%" o "campo Like @Parametro '%'" o bien "campo Like @Parametro" y en el fill pasarle el valor con el '%', pues de ninguna manera funciona.

    Si alguien tiene alguna idea o ejemplo se lo agradezco.

    Saludos.

    lunes, 9 de marzo de 2009 12:37

Todas las respuestas

  • hola,

    la verdad no llego a comprender la relacion del Fill (si es que te refieres al metodo), con el filtro Like que quieres utilizar.

    O sea que yo sepa el @Parametro, sera un parameter del un Command, o SqlCommand, o sea este no lo asignas en el Fill, hasta donde se.
    Y me imagino que estaras utilizando Stored procedure, si es asi podrias armar el like dentro del mismo stored:

    o sea algo como: SET @filter = @parametro + '%'

    y luego utilizar el @filter en lugar de directo el parametro.


    CREATE PROCEDURE SP_TestFiltro
        @parametro varchar(50)
    AS

    DECLARE @filter varchar(50)

    SET @filter = @parametro + '%'

    SELECT * FROM <table> WHERE <campo> LIKE @filter


    o sea seria algo asi


    No se si sera este tu caso, por ahi podrias especificar un poco mas comoe s que le envias al fill el parametro.
    Saludos

    Leandro Tuttini
    jueves, 12 de marzo de 2009 16:14
  • Hola Leandro y gracias por atenderme.

    Estoy trabajando con DataSets Tipados sin Stored Procedures y al trabajar con DataSets Tipados no estás tocando directamente SqlCommands, ya que el configurador del Adaptador ya te monta la secuencia interna, incluso de los parámetros, yo lo único que indico dentro del configurador del DataSet es la secuencia de Select, en éste caso como ejemplo; "Select ... From tabla Where campo = @ParametroCampo", y esto me genera automáticamente en el fichero ".xsd" un método "Fill" y el Parámetro correspondiente al Campo, con todo el Select ya preparado para que yo vía código haga el llenado de la Tabla del DataSet al estilo "this.tablaTablaAdapter.Fill(this.dataset.Tabla, this.variableParametroCampo);", y se produce la carga.

    Por eso no tengo acceso al SqlCommand al ser todo super automático, y no veo donde puedo indicar un String.Format con el '%'.

    Esta es la ventaja que le veo a los DataSets Tipados, pero por otro lado posiblemente no tenga tanta maniobrabilidad con otros aspectos, a no ser que se pueda operar de otra forma, que entiendo que debería ser así, pero yo no se como.

    Saludos y gracias por tu ayuda.

    jueves, 12 de marzo de 2009 22:04
  • hola,

    aahh, ok entendi la situacion, como hay tantas formas de usar un Fill, no pense que lo hacias usando TableAdapter.

    o sea, el command con la consulta que esta cargada en el Dataset, ya tiene la forma:
     SELECT ... FROM tabla WHERE campos LIKE @parametro

    Si esto es asi, pregunto es muy complejo o hay alguna restriccion que tengas para armar el parametro desde fuera.

    O sea me dices que el metodo Fill() del TableAdapter, te da la posibilidad de pasar parametros?, lo pregunto porque la verdad solo vi algo de teoria con respecto a los TablAdapter, nunca los use para el desarrollo de aplicaciones.


    Me imagino que podrias hacer algo de esta forma:

    public void MetodoTest(string paramtest)
    {
        string param = paramtest + "%";

        .
        .
        this.tablaTablaAdapter.Fill(this.dataset.Tabla, param );
        .
        .
        .

    }

    o si me dices que tienes que agregar el campo podria ser:

    string param = string.Format("campos = {0}%", paramtest );


    o sea algo asi no te sirve, creo que es simple, y si tienes bien separadas las capas de tu aplicacion, y esta todo ordenado, no deberia generar ningun problema, ya que este queda, por ejemplo, en un metodo.

    Bueno espero te sirva la idea
    Saludos


    Leandro Tuttini
    jueves, 12 de marzo de 2009 22:23