Visual Basic - ADOC RECORDSET.FILTER

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

ADOC RECORDSET.FILTER

Publicado por ricaurte (313 intervenciones) el 14/04/2008 22:52:46
Tengo un control ADOC enlazado a un DATAGRID y si esta normal (sin filtros) se muestra bien, pero cuando me muestra el filtro esta todo igual como si no lo aplicara.

Conecto el datagrid al control adoc mediante esto:

CONECCION = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=" & ARCHBASE

Me.ADOCCLIE.ConnectionString = CONECCION
Me.ADOCCLIE.CommandType = adCmdTable
Me.ADOCCLIE.RecordSource = NAMETABLA
Me.ADOCCLIE.Refresh

donde ARCHBASE es la ruta a la base de datos. (pero eso funciona bien)

y para filtrar lo que hago, es que tengo que cerrar la base y volverla abrir pero igual no me hace el filtro, o no se si tengo qeu cerrarla para filtrarla nuevamente, y esto es lo que uso para filtrar.

CADBUSQUEDA = "SELECT * FROM " & "[" & NAMETABLA & "]" _
& " WHERE " & FILTRO1 & " " & COND1 & " " & "'" & TEXT1 & "'"

donde NAMETABLA="CLIENTES_EXT"
FILTRO1="SUCURSALES"
COND1="=" (SIGNO DE IGUAL)
TEXT1="CORONADO"

y luego de eso aplico

Me.ADOCCLIE.Recordset.Filter = CADBUSQUEDA

Pero todo me sigue igual, no me cambia nada, ayuda por favor :(
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ADOC RECORDSET.FILTER

Publicado por Miguelmx (1 intervención) el 07/08/2009 06:07:10
.Filter espera una cadena de busqueda, no una sentencia select .

Si quieres usar un select, especificalo en el punto donde dice

Me.ADOCCLIE.CommandType = adCmdTable
Me.ADOCCLIE.RecordSource = NAMETABLA

Remplazandola por

Me.ADOCCLIE.CommandType = adCmdText
Me.ADOCCLIE.RecordSource = "SELECT * FROM " & "[" & NAMETABLA & "]" _
& " WHERE " & FILTRO1 & " " & COND1 & " " & "'" & TEXT1 & "'"

(OJO QUE AQUI QUIEN HACE EL FILTRADO ES EL MOTOR DE BASE DE DATOS)

O si quieres usar filter , tienes q especifcarlo asi

CADBUSQUEDA = FILTRO1 & " " & COND1 & " " & "'" & TEXT1 & "'"

(AQUI EL FILTRADO LO HACE LA MAQUINA CLIENTE)


Filter es mas rapido puesto que trabaja con el recordset que ya se encuentra en tu maquina, pero si tu base tiene cientos de registros, lo mejor seria hacer la discrimancion en el select, de no hacerlo asi, en cada ejecucion tu programa recuperaria los cientos de registros que ya se encuentren en la tabla. Como regla general en bases de datos, ningun select deberia ejecutarse sin un "where".

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ADOC RECORDSET.FILTER

Publicado por luck (1 intervención) el 20/10/2009 18:59:50
My friend, el filter solo funciona sobre la clausula WHERE no tienes que indicar todo el query.

el filtro es como una opcion más del where.

Ej.

rd.filter = "CAMPO = 'CONDICIÓN'"

SALUDOS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar