none
Select TOP NumVariable en TableAdapter de DataSet

    Question

  • Hola a todos/as.

    Estoy llenando una tabla (fill) desde un TableAdapter e intentando saber como puedo hacer un Select indicando el TOP de registros para un número variable como si se lo pasase por parámetro como haría con un campo normal, sería algo así:

    SELECT TOP @Num * FROM NombreTabla WHERE Campo1 = @Param

    o bien como puedo tener dicho número en los Settings para indicarlo en el propio Select:

    SELECT (Select ...) * FROM NombreTabla WHERE Campo1 = @Param

    Si tenéis alguna idea o ejemplo os lo agradezco.

    Saludos.

    Monday, September 26, 2011 5:56 AM

Answers

  • Hola Juanca, Te pongo un ejemplo sencillo:

     

      using (SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=Prueba;Integrated Security=True;Pooling=False"))
                {
                    SqlCommand cmd = new SqlCommand("select top (@num) * from Nombres", con);
                    using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                    {
                        cmd.Parameters.Add("num", 3);
                        DataTable dt = new DataTable();
                        da.Fill(dt);
                        foreach (DataRow r in dt.Rows)
                        { 
                            MessageBox.Show(r["Nombre"].ToString());
                        }
                    }
                }
    

    Como verás el parametro del top lo he métido entre parentesis en la consulta, y luego lo añado como un parametro normal.

     

    Un saludo


    Javier Torrecilla
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    TabControl con Mejoras
    • Marked as answer by Joanca Monday, September 26, 2011 7:51 AM
    Monday, September 26, 2011 7:04 AM