Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

buscar en una datagrid

Estas en el tema de buscar en una datagrid en el foro de Visual Basic clásico en Foros del Web. hola a todos En mi formulario quiero realizar la búsqueda de empleados de mi base de datos a la misma estoy conectado con un odbc ...
  #1 (permalink)  
Antiguo 01/09/2005, 07:40
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta buscar en una datagrid

hola a todos

En mi formulario quiero realizar la búsqueda de empleados de mi base de datos a la misma estoy conectado con un odbc a access de la siguiente manera:

Que aparezca un datagrid con todos los nombres de los empledos.
Tener un cuadro de texto donde el usuario introduzca el nombre del cliente que quiere buscar y mientras introduce dicho nombre que en el datagrid se vaya seleccionando las filas que coincidan con el nombre que se va introduciendo y que las demás desaparezcan.
Estoy realizando una conexión con ado
  #2 (permalink)  
Antiguo 01/09/2005, 07:46
Avatar de dxWiritoxb  
Fecha de Ingreso: agosto-2005
Mensajes: 24
Antigüedad: 18 años, 7 meses
Puntos: 0
ASuuuuu eso yo lo hice man....pero ta en mi casa ahora....jejejejje
__________________
":cool: Porque la vida es ahora:cool:"
  #3 (permalink)  
Antiguo 01/09/2005, 07:47
Avatar de dxWiritoxb  
Fecha de Ingreso: agosto-2005
Mensajes: 24
Antigüedad: 18 años, 7 meses
Puntos: 0
haber man si me dejas tu mail para enviarte mi menu en visual basic 6.0+access
__________________
":cool: Porque la vida es ahora:cool:"
  #4 (permalink)  
Antiguo 01/09/2005, 08:28
Avatar de relasoft  
Fecha de Ingreso: mayo-2005
Ubicación: Santa Fe, Argentina
Mensajes: 660
Antigüedad: 18 años, 11 meses
Puntos: 3
Mira yo he logrado lo mismo simplemente usando un control data.

Cuando enlazas el control data con el dbgrid, y realizas una consulta SQL el dbgrid automaticamente se modifica y te mostrara los campos que coincidan con lo que escribes. A medida que vas ingresando el nombre, por ejemplo, el dbgrid se acortara y mostrara todos los nombres que empiezen con , M si has escrito M, y asi sucesivamente. Aqui te dejo la consulta que hace esto posible.

Data1.RecordSource = "select * from Productos where IdProducto like '" & Text7.Text & "*';"
Data1.Refresh

esto debes colocarlo en el evento change del textbox o cualquier otro control que uses para el ingreso de texto.

Por cierto esto lo hago con una base de datos Access 2000 usando DAO y no ADO. Pero para el caso de ADO funciona lo mismo. Solo que en el lugar donde dice data1. ... cambialo por el control ADO que estes usando

Gracias
__________________
Deamon Technologies | Diseño Web » Programacion » Consulting | www.deamon.com.ar
Profesional Windows 2003 Server 3 Estrellas
Mi Curriculum
  #5 (permalink)  
Antiguo 01/09/2005, 08:30
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
eso estaba por responderle que con una consulta sql se puede..

jeje nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #6 (permalink)  
Antiguo 10/04/2008, 04:22
 
Fecha de Ingreso: abril-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 1
Re: buscar en una datagrid

Cita:
Iniciado por relasoft Ver Mensaje
Mira yo he logrado lo mismo simplemente usando un control data.

Cuando enlazas el control data con el dbgrid, y realizas una consulta SQL el dbgrid automaticamente se modifica y te mostrara los campos que coincidan con lo que escribes. A medida que vas ingresando el nombre, por ejemplo, el dbgrid se acortara y mostrara todos los nombres que empiezen con , M si has escrito M, y asi sucesivamente. Aqui te dejo la consulta que hace esto posible.

Data1.RecordSource = "select * from Productos where IdProducto like '" & Text7.Text & "*';"
Data1.Refresh

esto debes colocarlo en el evento change del textbox o cualquier otro control que uses para el ingreso de texto.

Por cierto esto lo hago con una base de datos Access 2000 usando DAO y no ADO. Pero para el caso de ADO funciona lo mismo. Solo que en el lugar donde dice data1. ... cambialo por el control ADO que estes usando

Gracias
No soy capaz de encontrar el RecordSource. Que es Data1?? tu base de datos, el datagridview?? Cual es su equivalente en Vb 2005??. El problema es que tengo un datagridview que debe mostrar los productos al seleccionar los tipos de productos en un combo (eso ya lo tengo hecho) y en la misma datagridview se deben mostrar los productos al ir escribiendo en un textbox el nombre de producto. Esto esta regulado con 2 radio buttons para seleccionar la consulta por nombre o por tipo de producto. (2 tablas diferentes==> Productos y tipos de productos)
Gracias

Última edición por tsunamijavip; 10/04/2008 a las 04:49 Razón: Correccion de errores
  #7 (permalink)  
Antiguo 10/04/2008, 04:53
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 2 meses
Puntos: 37
Re: buscar en una datagrid

Cita:
Iniciado por tsunamijavip Ver Mensaje
No soy capaz de encontrar el RecordSource. Que es Data1?? tu base de datos, la rejilla?? Cual es su equivalente en Vb 2005??. El problema es que tengo una rejilla que debe mostrar los productos al seleccionar los tipos de productos en un combo (seo ya lo tengo hecho) y en la misma rejilla se deben mostrar los productos al ir escribiendo en un textbox el nombre de producto. Esto esta regulado con 2 radio buttons para seleccionar la consulta por nombre o por tipo de producto. (2 tablas diferentes==> Productos y tipos de productos)
Gracias
Data es un control de VB (anterior a .NET) que funciona como un contenedor de datos de una tabla. Su equivalencia en VB 2005 sería como el BindingSource.

Te pongo un ejemplo de cómo ir cargando un DataGridView según se escribe en un TextBox.

Código:
Imports System.Data.OleDb


Public Class Form1

    Dim oCon As New ADODB.Connection
    Dim rs As New ADODB.Recordset

    Public Sub New()

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' incluir referencia .COM a ADO
        Try
            oCon.Open("Provider=Microsoft.jet.oledb.4.0;data source = " & CurDir() & "\Activos2003.mdb")
            Dim sTable As String = "Pedidos"
            Dim sql As String = "Select * From " & sTable
            rs.Open(sql, oCon, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

            Dim oDa As OleDbDataAdapter = New OleDbDataAdapter
            Dim oDs As New DataSet
            oDa.Fill(oDs, rs, sTable)
            Me.BindingSource1.DataSource = oDs.Tables(0)
            Me.DataGridView1.DataSource = Me.BindingSource1
            Me.DataGridView1.EditMode = DataGridViewEditMode.EditOnEnter

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim sTable As String = "Pedidos"
        Dim sql As String = "Select * From " & sTable & " WHERE Proveedor LIKE '" & TextBox1.Text & "%'"
        rs.Open(sql, oCon, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

        Dim oDa As OleDbDataAdapter = New OleDbDataAdapter
        Dim oDs As New DataSet

        oDa.Fill(oDs, rs, sTable)
        BindingSource1.DataSource = oDs.Tables(0)
        DataGridView1.DataSource = BindingSource1
    End Sub
En este caso la base de datos es de Access, si estás utilizando SQL Express, sólo cambia la conexión.
  #8 (permalink)  
Antiguo 10/04/2008, 05:21
 
Fecha de Ingreso: abril-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 1
Re: buscar en una datagrid

Muchas gracias! pero sigue sin funcionarme
Lo he intentado pero el primer error me sale en estas lineas de codigo:
Dim oCon As New ADODB.Connection
Dim rs As New ADODB.Recordset

no reconoce nada parecido a ADODB

Siento ser tan persistente pero es que ando un poco pegado en Ataque a bases de datos con Visual 2005
  #9 (permalink)  
Antiguo 10/04/2008, 05:27
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 2 meses
Puntos: 37
Re: buscar en una datagrid

Fíjate en este comentario:

Código:
' incluir referencia .COM a ADO 
¿Lo has hecho, es decir has incluido esa referencia?
  #10 (permalink)  
Antiguo 10/04/2008, 05:42
 
Fecha de Ingreso: abril-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 1
Re: buscar en una datagrid

Uumm no, no se como hacerlo. Lo siento pero ufff de bases de datos ando fatal en Vb 2005 y vb6.

A ver, lo que he incluido ha sido
Imports System.Data.OleDb

pero ya te digo, que estoy superperdido con este tema

De todas maneras muchas gracias por responder
  #11 (permalink)  
Antiguo 10/04/2008, 07:20
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 2 meses
Puntos: 37
Re: buscar en una datagrid

Para incluir la referencia a ADO:

En el menú "Proyecto" seleccionas "Agregar referencia" te saldrá una venta con una serie de pestañas, seleccionas la pestaña que dice COM y buscas la referencia "Microsoft ActiveX Data Objects 2.x Library" la masrcas, y listo!

Nota: en 2.x la equis es el número de referencia que tienes, marca la más alta p.e. 2.8
  #12 (permalink)  
Antiguo 10/04/2008, 08:33
 
Fecha de Ingreso: abril-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 1
Re: buscar en una datagrid

Ok, Muchisimas gracias!!!
Ya he solucionado ese error, siento que el final esta ya cerca!!

Me ha salido un nuevo error:

Error 9 No se pudo crear el ensamblado de contenedor para la biblioteca de tipos "AxMSAdodcLib". Se produjo una excepción de tipo 'Microsoft.Build.Tasks.ComReferenceResolutionExcep tion'.

Una pregunta, los nombres tipo BIndingSource1 y DatagridView1, los tengo que sustituir por el nombre de mis controles no? Lo tengo hecho, y supongo que si pero me gustaria asegurarme.

Muchas gracias, crack, eres mi salvación.

Espero tu respuesta.
  #13 (permalink)  
Antiguo 10/04/2008, 08:55
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 2 meses
Puntos: 37
Re: buscar en una datagrid

Sobre ese error, no puedo decirte nada, sólo que cuando te salga la ventana del controlador de excepciones, pincha en 'Obtener ayuda sobre esta excepción' a ver si puedes solucionar algo.

En cuanto a los nombres de los controles, claro que los tienes que sustituir por los tuyos al igual que el nombre de la BD, tabla y campos.

Un saludo
  #14 (permalink)  
Antiguo 10/04/2008, 09:05
 
Fecha de Ingreso: abril-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 1
Re: buscar en una datagrid

Gracias me has sido de muchisima ayuda.
Sobre el error, tratare de solucionarlo.

lo de Public sub New()

me dice que la llamada se tiene que realizar por el microsoft Form Designer.

Como lo hago? Creo que el error esta ahi.

Gracias
  #15 (permalink)  
Antiguo 10/04/2008, 09:18
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 2 meses
Puntos: 37
Re: buscar en una datagrid

Hola,

Public Sub New() es de VB 2008, no caí en que usas 2005.

Sustitúyelo por:

Código:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
.
  #16 (permalink)  
Antiguo 10/04/2008, 09:54
 
Fecha de Ingreso: abril-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 1
Re: buscar en una datagrid

Hola

Ya he localizado el problema.

He hecho una traza y he comprobado que no es capaz de ejecutar esta linea en el Load de el formulario:
oCon.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\StandBar.mdb")

Es la ruta del origen de datos de mi Database.

Gracias por tu atencion
  #17 (permalink)  
Antiguo 10/04/2008, 10:33
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 2 meses
Puntos: 37
Re: buscar en una datagrid

Supongamos que tu base de datos que se llama StandBar.mdb está en un directorio (o carpeta) llamado DataDirectory que se halla en la unidad C:


oCon.Open("Provider=Microsoft.jet.oledb.4.0;data source = c:\DataDirectory\StandBar.mdb")

Nota: La función CurDir() devuelve el directorio donde se encuentra la aplicación, que es la equivalente a App.Path de VB6
  #18 (permalink)  
Antiguo 14/04/2008, 01:32
 
Fecha de Ingreso: abril-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 1
Re: buscar en una datagrid

Muchas gracias, pero lo he dejado ya por imposible, odio las rejillas :=/

De todas maneras supongo que volvere a intentarlo en el futuro, pero por ahora paso de ello porque no veo solucion.

Realmente admiro el conocimiento que tienes de Visual Studio. Sigue asi porque eres una ayuda muy grande para los pobres programadores menos preparados.

Muchas gracias
  #19 (permalink)  
Antiguo 14/04/2008, 05:17
 
Fecha de Ingreso: abril-2008
Mensajes: 20
Antigüedad: 16 años
Puntos: 1
Re: buscar en una datagrid

Ya lo he solucionado, gracias por tu apoyo, pongo el codigo por si a alguien le sirve (Vb2005)

Esto en el textchange del combo(txtnombre)

Dim CadenaConexion As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Database.mdb"
Dim conexion As New OleDb.OleDbConnection(CadenaConexion)
Dim consulta As String = "SELECT * FROM PRODUCTOS WHERE NombreProducto LIKE '%" & Txtnombre.Text & "%'"
Dim comando As New OleDb.OleDbCommand(consulta, conexion)
Dim objDataAdapter As New OleDb.OleDbDataAdapter(comando)
Dim objDataTable As New Data.DataTable("ProductosConsulta")
objDataAdapter.Fill(objDataTable)
objDataAdapter.Dispose()
objDataAdapter = Nothing
comando.Dispose()
comando = Nothing

Dim objDataRow As DataRow
PRODUCTOSDataGridView.DataSource = Nothing
PRODUCTOSDataGridView.Rows.Clear()
For Each objDataRow In objDataTable.Rows
PRODUCTOSDataGridView.Rows.Add(objDataRow.Item("Co digoProducto"), objDataRow.Item ("NombreProducto"), objDataRow.Item("PrecioVenta"), objDataRow.Item("Unidades"), objDataRow.Item("Tipo"))

Next
conexion.Close()

Última edición por tsunamijavip; 14/04/2008 a las 05:46
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 02:15.