Inicio > Visual FoxPro > fer1710 > filtrar tabla en vfp 6

filtrar tabla en vfp 6

Experto:
Usuario:
Fecha: 24/04/2008
Valoración: (5,00 sobre 5) Categoría: Visual FoxPro
20/04/2008
rangosch, usuario preguntando en Visual FoxPro
Usuario
tengo una tabla con 3 columnas nombre,cedula y edad abajo ejemplo.
necesito filtrar la tabla por nombre que salgan solo las personas con nombre carlos, pero que su apellido no sea fernandez y ademas que sean mayor de 30 años
gracias de antemano...
ejemplo:
nombres                         ci                 edad
carlos fernandez         1231231            26
carlos perez                24324234          45
pedro hernandez        1123123            23
carlos orozco               5345346            30
21/04/2008
rangosch, experto respondiendo en Visual FoxPro
Experto
Hola,
Puedes usar el comando VFP SetFilter, de la siguiente forma:
set filter to left(nombres, 6) = 'carlos' and substr(nombres,8,9) <> 'fernandez' and edad > 30
Espero te haya servido,
Saludos,
Fernando
21/04/2008
rangosch, usuario preguntando en Visual FoxPro
Usuario
GRACIAS Fernando por tu pronta respuesta.
Pero, No me filtra la tabla me coloca en cero la tabla, es decir, hago un count y esta en cero el resultado. es decir no realiza lo deseado
set filter to left(nombres, 6) = 'carlos' and substr(nombres,8,9) <> 'fernandez' and edad > 30
le cambie por su puesto los nombres de la filas ejemplo te coloco el detalle
set filter to left(nombre del campo, 5) = 'amort' and substr(nombre del campo,7,8) <> 'soporte' and nombre de campo  = '204'
este es el codigo que diseñe
saludos
daniel rangosch
 
21/04/2008
rangosch, experto respondiendo en Visual FoxPro
Experto
Ok, en el ejemplo que me diste, yo cree una tabla con los datos que me pusiste en la pregunta inicial, y a mi si me funciona ok. Verifica bien las mayusculas y minusculas en los datos.
Para descartar, primero verifica el filtro por partes:
1. set filter to left(nombres, 6) = 'carlos'
te debe mostrar todos los que se llamen carlos, asegurate bien que esten igualmente las mayusculas y minusculas.
2. Si el filtro anterior te arroja resultados correctos, puedes aumentar mas el filtro:
set filter to left(nombres, 6) = 'carlos' and substr(nombres,8,9) <> 'fernandez', aqui te debe mostrar todos los carlos que no se apelliden fernandez.
Trata de verificar el filtro por partes, fijate que en la DBF no tengas espacios al inicio de los nombres,
me avisas como te va
Fernando
 
22/04/2008
rangosch, usuario preguntando en Visual FoxPro
Usuario
Gracias fernando un millon amigo... Resulta que los datos estaban todos en mayusculas y yo lo estaba escribiendo en minuscula.
Sabes, Pero tengo un problema resulta que no hubo un estandar en el ingreso de los datos en algunos casos tengo el nombre primero y en otros de segundo. Por ejemplo
nombres                         ci                 edad
carlos fernandez         1231231            26
perez raul carlos         24324234          45
pedro hernandez        1123123            23
carlos orozco               5345346            30
fernandez ramon carlos 61684668         40
 
y como lo estamos filtrando 'carlos'  puede estar en cualquier parte de la celda al principio, en el medio o al final del nombre, menos mal que me percate...
Sabes igualmente descartando 'fernandez' puede estar en cualquier parte de la celda al principio, en el medio o al final del nombre ya que se ingresaron los datos muy desordenado...
De antemano me haz ayudado muchisimo...
 
 
22/04/2008
rangosch, experto respondiendo en Visual FoxPro
Experto
 Puedes usar el comparativo ', para buscar en una cadena, por ejemplo, para filtrar a todos los registros que contengan 'fernandez' en el campo nombres puedes usar esta linea:
set filter to 'fernandez' $ nombres
Tambien puedes usar la function UPPER para convertir a mayusculas una expression, de esta manera puedes hacer tu filtro sin importer que los datos contengan mayusculas o minusculas, usa el commando:
set filter to 'FERNANDEZ' $ upper(nombres)
espero te sirva
Saludos,
Fernando
23/04/2008
rangosch, usuario preguntando en Visual FoxPro
Usuario
Fernando el codigo que estoy utilizando para la consulta es el siguiente
set filter to 'AMORT'$upper(art_des) and 'FORD'$upper(art_des) and co_prov = '027'
este me corre, pero a su vez necesito que me excluya una palabra Ejemplo:
set filter to 'AMORT'$upper(art_des) and 'FORD'$upper(art_des) and
 <> 'CARTUCHO'$upper(art_des) and co_prov = '027'
es decir que me filtre los articulos con la palabra  AMORT, a su vez con FORD que me excluya CARTUCHO y solo del codigo de proveedor 027
Pero este no me corre me dice que falta algo...
Saludos, Daniel Rangosch
 
23/04/2008
rangosch, experto respondiendo en Visual FoxPro
Experto
Ok,
La linea (<> 'CARTUCHO' $ upper(art_des)), esta mal planteada, reemplazala por:
and ('CARTUCHO' $ upper(art_des) = .F. )
de manera que quedaria asi:
 set filter to 'AMORT'$upper(art_des) and 'FORD'$upper(art_des) and ('CARTUCHO' $ upper(art_des)) = .F.  and co_prov = '027'
Suerte,
Fernando
24/04/2008
rangosch, usuario preguntando en Visual FoxPro
Usuario
Gracias, Fernando he resuelto el problema, excelente ayuda,hasta la Proxima...
Enlaces patrocinados