none
Como buscar un elemento en un data set RRS feed

  • Pregunta

  • Hola:
    Estoy realizando un proyecto en c# con visual studio, tengo un base de datos en sql server y he creado un dataset, ahora quiero buscar algun dato.
    Lo que he pensado es: en un combo box que indique la tabla donde quiere buscar y luego poner una palabra clave y dar a un boton "buscar" y que me aparezca un datagripview o algo de eso con todas las filas que contengan la palabra.

    Muchas Gracias
    jueves, 8 de octubre de 2009 17:27

Todas las respuestas

  • Si ya tienes cargado tus datos en el DataSet, entonces puedes obtener un DataTable (dataset.Tables[0], por ejemplo) y utilizar el método DataTable.Select. Por ejemplo, algo como:  

    DataSet dataSet = CargarDataSet();
    DataTable table = dataSet.Tables[0];
    
    DataRows[] rows = table.Select("MiColumna LIKE '%Prueba%'");
    
    foreach (DataRow row in rows)
    {
        Console.WriteLine(row["MiColumna"]);
    }

    Aquí hay un ejemplo sobre las expresiones válidas que le puedes pasar a DataTable.Select:


    Ahora bien, si lo que quieres es que busque en tu base de datos, entonces puedes crear parámetros en tu consulta select. Por ejemplo: 

    SqlConnection connection = new SqlConnection("MiCadenaDeConexión");
    connection.Open();
    
    StringBuilder sql = new StringBuilder()
        .Append("select ProductID, BranchID, ProductTypeID, UnitID, Name, ")
        .Append("    Description, Price, PriceUnitID, TaxAmount, StandardCost, ")
        .Append("    StandardCostUnitID, Size, SizeUnitID, Weight, WeightUnitID, ")
        .Append("    SellStartDate, SellEndDate, DiscontinuedDate, MaterialType, ")
        .Append("    AuditUser, AuditComments, AuditCreated, AuditModified ")
        .Append("from Product ")
        .Append("where rtrim(ProductID) like @ProductID ");
    	
    SqlCommand command = new SqlCommand();
    command.Connection = connection;
    command.CommandText = sql.ToString();
    command.CommandType = CommandType.Text;
    command.Parameters.Add("@ProductID", "%123%");
    
    SqlDataAdapter adapter = new SqlDataAdapter(),
    adapter.SelectCommand = command;
    
    DataSet dataSet = new DataSet();
    adapter.Fill(dataSet, "Product");

    Nota que creamos un parámetro, ProductID, a través del cuál filtramos.

    Espero sirva. Saludos. 


    Fernando Gómez
    www.fermasmas.com
    • Editado Fernando A. Gómez jueves, 8 de octubre de 2009 18:05 Añadí referencia a expresiones
    • Propuesto como respuesta Andrés Ayala viernes, 26 de noviembre de 2010 16:34
    jueves, 8 de octubre de 2009 18:03
  • Muchas gracias por la ayuda, he hecho todo lo que me has dicho y la parte de abajo es la que mas me gusta y entiendo pero sigo teniendo un problema que no se visualizar los datos por pantalla.
    Lo siento es que soy nuevo en esto.

    martes, 13 de octubre de 2009 16:59
  • Hola,

    Una vez que tienes tu DataSet, tienes que enlazar estos datos con tus controles. Lopuedes hacer manual, o bienutilizando Data Bindings. Aquí hay un artí____ interesante al respecto, que espero te sirva. 


    Saludos. 


    Fernando Gómez
    www.fermasmas.com
    martes, 13 de octubre de 2009 17:08
  • Hola:
    Me sido de gran ayuda en articulo, todo el problema que tenia que no sabia que para meter los datos de la busqueda en un dataGripView primero los tengo que tener en un bindongSource.
    Adjunto el codigo para futuros aprendices como yo.

    SqlConnection conexion = new SqlConnection(Properties.Settings.Default.connectionString);
    string consulta = "SELECT * FROM tabla";
    SqlDataAdapter da = new SqlDataAdapter(consulta, conexion);
    SqlCommandBuilder cb = new SqlCommandBuilder(da);
    DataTable table = new DataTable();
    table.Locale = System.Globalization.CultureInfo.InvariantCulture;
    da.Fill(table);
    bsTablaBusquedas.DataSource = table;               //bindingSource creado en modo visual
    dgvVerBusqueda.ReadOnly = true;                     //dataGripView creado en modo visual
    dgvVerBusqueda.DataSource = bSTablaBusquedas;

    Muchas gracias
    lunes, 19 de octubre de 2009 16:26
  • Hola

    Puedes mirar este comentario que es algo muy parecido a lo que nexecitas

    Rutinas para mostrar datos

    Programador en VB.NET 2008, SQL SERVER 2008, Crystal Report 2008 Si la respuesta es correcta, marcála como correcta. También puedes votar como útil si te sirvió.
    • Propuesto como respuesta Bitnius lunes, 2 de noviembre de 2009 4:23
    lunes, 2 de noviembre de 2009 4:22