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

Buscar con flexgrid

Estas en el tema de Buscar con flexgrid en el foro de Visual Basic clásico en Foros del Web. Hola amigo le agradesco de antemano sus apoyos pueto que me han servido de mucho, ademas de que es de gran utilidad este foro, bueno ...
  #1 (permalink)  
Antiguo 19/02/2008, 11:24
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 4 meses
Puntos: 1
De acuerdo Buscar con flexgrid

Hola amigo le agradesco de antemano sus apoyos pueto que me han servido de mucho, ademas de que es de gran utilidad este foro, bueno les comento que sigo con mi sistema y resulta que tengo que hacer busquedas por nombre y como pueden haber registros con el mismo nombre necesitaria hacerlo con un flexgrid. es decir:

que al buscar por un nombre en un text se vaya llenando el flexgrid con forme a las letras de la palabra que se va introduciendo y que al seleccionar un registro en el flexgrid este me mande los registros a los text correspondientes para su modificacion.

mi base de datos la hago en acces y las intrucciones en sql porfaor espero que alguien pueda darme una orientacion de como le pudiera hacer.. gracias y saludoss!!
  #2 (permalink)  
Antiguo 19/02/2008, 12:06
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Buscar con flexgrid

Hola rishart, la orientación es la siguiente:

En el evento Change del TextBox pones una instrucción Select como esta:

"Select * From NombreTabla Where CampoaBuscar Like '" & TextBox.Text & "%'"

Esta consulta se la asignas a un recordset y después enlazas el Grid al recordset:

Set MSFlexGrid.DataSource = recordset

Cada vez que pulses una tecla en el TextBox, te irá mostrando los campos que empiecen por lo escrito.

y para cuando selecciones un item del FlexGrid

Text1.Text = MSFlexGrid.TextMatrix(Linea, Columna)

Si tienes dudas, mañana (de España) te pongo un ejemplo comentado.

Suerte!
  #3 (permalink)  
Antiguo 19/02/2008, 15:09
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Re: Buscar con flexgrid

Hace 1 mes buscaba el mismo codigo que tu
Aqui te dejo lo poco que encontre pero que me ha servido en este caso uso un datagrid

Cree un funcion llamada Presentar
Private Sub Presentar()
With RG_EMPLEADOS
Text1 = !CODIGO
Text2 = !APELLIDOS
Text3 = !NOMBRES
End With
End Sub

En el evento RowColChange llamara a la funcion al hacer click sobre una fila del datagrid y lo mostrara en las cajas de texto

Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
PRESENTAR
End Sub

Espero no equivocarme ya que no tengo el codigo a la mano

saludos
  #4 (permalink)  
Antiguo 20/02/2008, 14:50
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 4 meses
Puntos: 1
De acuerdo Re: Buscar con flexgrid


muchas gracias Avellaneda por tu aporte pero te agradeceria muchisimo si pueras poner el ejemplo ya que aun tengo unas cuantas dudas al conectar el flex a la base de datos graciass de antemano y saludos....
  #5 (permalink)  
Antiguo 21/02/2008, 01:08
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Buscar con flexgrid

Hola, ahí va el ejemplo

Código:
Private Sub Text1_Change()
Dim rs As ADODB.Recordset
Set rs = New Recordset
With rs
    .ActiveConnection = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\MiDB.mdb"
    .CursorType = adOpenStatic
    .CursorLocation = adUseClient
    .Open "Select * from LaTabla WHERE NombreCampo LIKE'" & Text1 & "%'"
End With
Set MSFlexGrid1.DataSource = rs
End Sub
Explicación:
Ante todo tienes que referenciar ADO
Cada vez que pulses una tecla en el TextBox(Text1) irá mostrando en el Grid los registros de la tabla cuyo campo empiece por los caracteres escritos.
  #6 (permalink)  
Antiguo 21/02/2008, 01:50
 
Fecha de Ingreso: octubre-2003
Ubicación: Granada
Mensajes: 481
Antigüedad: 20 años, 7 meses
Puntos: 1
Re: Buscar con flexgrid

no se si lo que te interesa que una vez que hayas cargado el flex grid..hacer la busqueda dentro de los resultados que te ha dado ..es decir no tener que hacer de nuevo una busqueda en la bd sino dentro del mismo grid..eso es diferente y lo que te ahorra es hacer conexion con la BD cada vez que escribes algo...
__________________
la duda es el principio del saber
  #7 (permalink)  
Antiguo 21/02/2008, 09:23
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Buscar con flexgrid

La pregunta fué esta:

que al buscar por un nombre en un text se vaya llenando el flexgrid con forme a las letras de la palabra que se va introduciendo y que al seleccionar un registro en el flexgrid este me mande los registros a los text correspondientes para su modificacion.

y a eso respondí!

y por otra parte te digo: es más rapido hacer la conexión a la BD, cada vez que se pulsa una tecla, que seleccionar en el Grid los registros que no cumplan la condición y eliminarlos. ¿o cómo la harías tu?
  #8 (permalink)  
Antiguo 23/02/2008, 12:14
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 4 meses
Puntos: 1
De acuerdo Re: Buscar con flexgrid

Cita:
Iniciado por Avellaneda Ver Mensaje
Hola, ahí va el ejemplo

Código:
Private Sub Text1_Change()
Dim rs As ADODB.Recordset
Set rs = New Recordset
With rs
    .ActiveConnection = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\MiDB.mdb"
    .CursorType = adOpenStatic
    .CursorLocation = adUseClient
    .Open "Select * from LaTabla WHERE NombreCampo LIKE'" & Text1 & "%'"
End With
Set MSFlexGrid1.DataSource = rs
End Sub
Explicación:
Ante todo tienes que referenciar ADO
Cada vez que pulses una tecla en el TextBox(Text1) irá mostrando en el Grid los registros de la tabla cuyo campo empiece por los caracteres escritos.


gracias avellaneda pero disculpa las molestias pero habra un modo de que esto se haga sin conexion ado por que no se nada acerca de las conexiones ado o si no es mucha molestia me podrias explicar que debo hacer?
gracias y saludos...
  #9 (permalink)  
Antiguo 24/02/2008, 04:58
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Buscar con flexgrid

Lo único que tienes que hacer es marcar la referencia "Microsof ActiveX Data Objects 2.x Library"

'x' puede ser un número entre cero y ocho que se refiere a la versión ADO, marca la más alta que te aparezca.
  #10 (permalink)  
Antiguo 25/02/2008, 11:05
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 4 meses
Puntos: 1
De acuerdo Re: Buscar con flexgrid

Cita:
Iniciado por Avellaneda Ver Mensaje
Lo único que tienes que hacer es marcar la referencia "Microsof ActiveX Data Objects 2.x Library"

'x' puede ser un número entre cero y ocho que se refiere a la versión ADO, marca la más alta que te aparezca.
gracias amigo pero creo que es lo mismo por que el que me aparece es "Microsoft ADO data control 6.0 (OLEDB)"ya lo tengo seleccionado pero a la hora de correr el programa para realizar la busqueda me marca un error en new recordset y no se por que el erro que me marca es "INVALID USE OF NEW KEYWORD" y si le doy aceptar me da la referencia en new recordset.

no se si tiene algo que ver con que cuando cargo el form abro mi base de datos con este codigo
Set dbs = OpenDatabase(App.Path & "\bdrancho.mdb")

ojala me puedas ayudar graciasss

saludosss
  #11 (permalink)  
Antiguo 25/02/2008, 11:34
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Buscar con flexgrid

Hola rishart,
Primero decirte que "Microsoft ADO data control 6.0 (OLEDB)" es un componente y no una referencia. Busca en Proyecto->Referencias y marcas lo que te indiqué anteriormente.

Lo segundo es que estás abriendo la base de datos con el método DAO y no ADO.
Elimina esa línea y copia el código tal y como lo puse sustituyendo los nombres de la mdb, la tabla y el campo.
No hace falta que abras la BD ya que el recordset se carga desde la misma.
  #12 (permalink)  
Antiguo 25/02/2008, 12:25
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 4 meses
Puntos: 1
De acuerdo Re: Buscar con flexgrid

Cita:
Iniciado por Avellaneda Ver Mensaje
Hola rishart,
Primero decirte que "Microsoft ADO data control 6.0 (OLEDB)" es un componente y no una referencia. Busca en Proyecto->Referencias y marcas lo que te indiqué anteriormente.

Lo segundo es que estás abriendo la base de datos con el método DAO y no ADO.
Elimina esa línea y copia el código tal y como lo puse sustituyendo los nombres de la mdb, la tabla y el campo.
No hace falta que abras la BD ya que el recordset se carga desde la misma.
muchas gracias avellaneda el codigo creo que esta bien pero la instruccion
"Set MSFlexGrid1.DataSource = rs" que va despues del ado me marca el error siguiente: "object variable or with block variable noy set" a que se debe tengo que declara algo o donde lo pongo, pues yo lo puse todo el codigo en el text change pero eso marca error y el flex lo tengo con ese nombre como le puedo hacer gracias

saludos
  #13 (permalink)  
Antiguo 25/02/2008, 12:32
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Buscar con flexgrid

¿El control MSFlexGrid se llama MSFlexGrid1?
Es decir, ¿cual es el nombre que le pusiste en diseño en la propiedad Name?
  #14 (permalink)  
Antiguo 25/02/2008, 12:48
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 4 meses
Puntos: 1
De acuerdo Re: Buscar con flexgrid

Cita:
Iniciado por Avellaneda Ver Mensaje
¿El control MSFlexGrid se llama MSFlexGrid1?
Es decir, ¿cual es el nombre que le pusiste en diseño en la propiedad Name?
Disculpa avellaneda pero ahorita me acabo de dar cuenta que estoy usando DAO y no me deja usar ADO el sistema por que cuando me dijiste de las referencias estaban seleccionada la de ADO y aun asi me marcaba el error, el codiogo me funciono cuando puse como prioridad 3 al ADO y en 4 al DAO ahi fue cuando funciono pero las otras areas de mi sistema ya no funcionan con esta prioridad y si lo invierto es decir DAO 3 y ADO 4 funciona todo excepto el codigo que me diste y si le puse ese nombre al flexgrid "MSFlexGrid1" disculpa la molestia pero no habra una manera de hacerlo en forma DAO??? alguna referencia que me pudieras dar te lo agradeceria muchisimo graciasss
saludos
  #15 (permalink)  
Antiguo 25/02/2008, 13:12
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Buscar con flexgrid

Limitaciones de DAO. No se puede enlazar un recordset a ningún control a no ser que sea a través de un control Data. Por esto (y otras cuantas razones), es mejor utilizar ADO.

Si sigues teniendo problemas, me envías un mensaje privado y te doy mi cuenta de correo para que me envíes el proyecto, porque me parece que estamos aburriendo al personal.

saludos
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




La zona horaria es GMT -6. Ahora son las 04:03.