FoxPro/Visual FoxPro - Ayuda con consultas

 
Vista:

Ayuda con consultas

Publicado por juan (40 intervenciones) el 16/09/2010 19:00:40
Buenos días a todos,

Les pido el favor me colaboren con la siguiente inquietud. Tengo una tabla donde se consigna los datos basicos de una persona ( apellido1, apellido2 y nombres). Necesito hacer una consulta por ejemplo de las personas cuyo primer apellido empiece por gomez, para ello utilizo 'LIKE' y comparo lo capturado en las cajas de texto con el registro en la tabla, pero me muestra todos los registros incluso los que tienen gomez en el segundo apellido. Aqui mismo tambien necesito validar al momento de guardar los datos que no exista en la tabla un registro con los mismos apellidos e igual nombre.

Les agradezco su ayuda.
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:Ayuda con consultas

Publicado por Edgar Zambrano (31 intervenciones) el 16/09/2010 19:33:42
aplica where en tu consulta ejemplo

select apellido1,apellido2,nombres from personas where alltrim(apellido1)="gomez"

asi filtras solo las personas con ese apellido en ese campo

o tambien de esta manera

select personas

set filter to
set filter to alltrim(apellido1)="gomez"

sobre la validación solo basta que realizes una busqueda donde los sean o no iguales, puedes utilizar seek y found para verificar si existe o no.

debes tener en cuenta que los nombres en este planeta no son unicos, puesto a que pueden haber personas con tus mismos nombres y apellidos.
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:Ayuda con consultas

Publicado por xx (378 intervenciones) el 16/09/2010 19:37:20
bueno hasta donde se like funciona asi al menos en mysql:

*te mostrara todos los que comienzan por gomez
select * from x where apellido like 'gomez%'

*todos los que contengan en alguna parte gomez
select * from x where apellido like '%gomez%'

*todos los que terminan en gomez
select * from x where apellido like '%gomez'

esto solo funcionara si tienes en una columna aparte el apellido y aparte el nombre si tienes todo en uno podria funcionar igual siempre y cuando los nombres y apellidos no coincidan
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:Ayuda con consultas

Publicado por es_binario (757 intervenciones) el 17/09/2010 03:08:55
Exacto solo para ampliar un poco los aportes de Edgar y xx

algo asi

*// asigna los valores
local a_paterno, a_materno, n_ombres
a_paterno = alltrim(Thisform.txtApaterno.value)
a_materno = alltrim(Thisform.txtAmaterno.value)
n_ombres = alltrim(Thisform.txtnombres.value)

*// realiza la consulta
select * from clientes where clientes.apaterno like "%" + a_paterno ;
and clientes.amaterno like "%" + a_materno ;
and clientes.nombre like "%" + n_ombres ;

*// de esta forma te mostrara todos los nombre que comienzen con las primeras letras que el usuario ingrese en los textbox nombre a paterno y a materno sin importar que deje uno en blanco pero si deja todos en blancto te muestra todos los clientes ... creo

y para ver si existe tan simple como antes de registrar al cliente hacer una consulta con los datos dedados por el usuario y con un simple if entonces podemos ver si ya existe y decirle al usuario que el cliente ya existe bla bla bla... etc.

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
sin imagen de perfil

RE:Ayuda con consultas

Publicado por victor perez (278 intervenciones) el 17/09/2010 18:53:38
DE acuerdo con todos...

Solo debes usar la funcion SELECT (Sql) y alli pones las condiciones para la busqueda.

Con respecto a no introducir dos personas con iguales nombres y apellido pues debes hacer un seek.

Te sugiero que sean campos separados, 1ernombre, 2donombre,apellido

Indexa to base de datos por alltrim(1ernombre) + alltrim(2donombre) + alltrim(apellido)
bajo un TAG name como NOMBRES

USE DATABASE IN 0 ALIAS ALMDATABASE
SELE ALMDATABASE
SET ORDER TO TAG NOMBRES

EN LOS CAMPOS INTRODUCES NOMBRE1,NOMBRE2,APELLIDO

LUEGO HACE UN SEEK DE ESTA FORM

SEEK ALLTRIM(THISFORM.NOMBRE1.VALUE) + ALLTRIM(THISFORM.NOMBRE2.VALUE) + ALLTRIM(THISFORM.APELLIDO.VALUE)

IF FOUND()
MESSAGEBOX("LOS DATOS YA EXISTEN")
RETURN 0
ENDIF

APPEND BLANK
Y EL RESTO DEL CODIGO...

ESTO LO PONES EN EL VALID DEL APELLIDO PUES SERIA EL ULTIMO CAMPO DONDE COLOCARAS INFORMACION ANTES DE REALIZAR LA BUSQUEDA.

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