InicioHazlo Tu MismoBuscar en una base de datos mientras se escribe c# .net

Buscar en una base de datos mientras se escribe c# .net

Hazlo Tu Mismo4/20/2011

//-----------------------------------------------------------------------------
// Ejemplo de buscar datos de una tabla conforme se escribe (13/Abr/06)
//
// ©ROLANDO ANTONIO ARRIAZA MARROQUIN
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Data.SqlClient;

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

// Para evitar re-entradas en el código
private bool iniciando = true;

// El DataTable lo necesitamos a nivel del formulario
private DataTable dt;

// El resto de variables no son necesarias a nivel de formulario
// y pueden estar definidas en el evento Form_Load

// La cadena de conexión
private string conexion =
@"Data Source = (local)SQLEXPRESS; " +
"Initial Catalog=PruebasGuille; " +
"Integrated Security=true";

// La cadena de selección
// los datos que traeremos de la base de datos.
private string seleccion =
"SELECT Nombre, Apellidos FROM Clientes";

// El adapatador para obtener los datos
private SqlDataAdapter da;


private void Form1_Load(object sender, EventArgs e)
{

this.txtApellidos.Text = "";

da = new SqlDataAdapter(seleccion, conexion);
dt = new DataTable();
da.Fill(dt);

this.datosClientes.DataSource = dt;

iniciando = false;
}

private void txtApellidos_TextChanged(object sender, EventArgs e)
{

if (iniciando) return;

// Buscar en el DataTable usando el método Select
// que es como un filtro WHERE en una cadena de selección.

// El resultado se devuelve como un array de tipo DataRow
DataRow[] filas;

// Aquí es donde hay que hacer el filtro de cómo buscar
// Usando % ... % no se tiene en cuenta dónde está el apellido escrito
// (puede ser el primero o el segundo)
// Si escribes "s" se buscarán todos los que contengan esa letra.
filas = dt.Select("Apellidos LIKE '%" + txtApellidos.Text + "%'");

// Borrar los elementos anteriores
this.listaApellidos.Items.Clear();

// Si hay datos, mostrar los apellidos
if (filas.Length > 0)
{

// Recorrer cada fila y mostrar los apellidos
foreach (DataRow dr in filas)
{
// También puedes mostrar cualquier otro campo,
// pero siempre que esté en la cadena de selección
// usada al cargar los datos
this.listaApellidos.Items.Add(dr["Apellidos"].ToString() + ", " +
dr["Nombre"].ToString());

}
}
}

private void listaApellidos_SelectedIndexChanged(object sender, EventArgs e)
{
if (iniciando) return;

// Al hacer clic, mostrar el dato
this.txtApellidos.Text = this.listaApellidos.SelectedItem.ToString();

// Buscarlo en el DataGridView (de forma manual, no conozco otra forma...)

// Eliminar las selecciones anteriores
this.datosClientes.ClearSelection();

// Recorrer las filas para buscar el Apellido indicado
foreach (DataGridViewRow fila in this.datosClientes.Rows)
{
// Si es el mismo apellido del textBox

// Curiosamente si no son los mismos datos
// se produce un error de que d.Cells(...) es Nothing
// En realidad de "curioso" no tiene nada,
// es que es la última fila, que está vacía...
if (fila.Cells["Apellidos"].Value == null || fila.Cells == null)
{
break;
}

// Si se quiere tener en cuenta el nombre y los apellidos
int i = this.txtApellidos.Text.IndexOf(",");

if (i > -1)
{
// En este ejemplo, el formato es Apellidos, Nombre
string nombre, apellidos;
apellidos = this.txtApellidos.Text.Substring(0, i).TrimEnd();
nombre = this.txtApellidos.Text.Substring(i + 1).TrimStart();

if (nombre == fila.Cells["Nombre"].Value.ToString()
&& apellidos == fila.Cells["Apellidos"].Value.ToString())
{
// Seleccionamos la fila
this.datosClientes.Rows[fila.Index].Selected = true;
// nos aseguramos de que sea visible
this.datosClientes.FirstDisplayedScrollingRowIndex = fila.Index;
break;
}
}
else
{
if (this.txtApellidos.Text == fila.Cells["Apellidos"].Value.ToString())
{
// Seleccionamos la fila
this.datosClientes.Rows[fila.Index].Selected = true;
// nos aseguramos de que sea visible
this.datosClientes.FirstDisplayedScrollingRowIndex = fila.Index;
break;
}
}
}
}
}
Datos archivados del Taringa! original
0puntos
2,151visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

r
rolignu2🇦🇷
Usuario
Puntos0
Posts26
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.