FoxPro/Visual FoxPro - BUSCAR REGISTRO USANDO BOTON DE COMANDO EN FOXPRO

 
Vista:

BUSCAR REGISTRO USANDO BOTON DE COMANDO EN FOXPRO

Publicado por MARIO SERNA LOPEZ (21 intervenciones) el 09/11/2010 23:25:15
USANDO LA PROGRAMACION NORMAL NO ME CAUSA PROBLEMA ALGUNO LOCALIZAR REGISTROS DENTRO DE UNA BASE DE DATOS Y PRESENTARLA EN PANTALLA. LO QUE NO HE LOGRADO HASTA EL MOMENTO ES UTILIZAR UN BOTON DE COMANDO DENOMINADO "BUSCAR", QUE ME PERMITA DENTRO DE UN FORMULARIO PRESENTAR LA INFORMACION SOLICITADA, EN ESTE CASO, LO RELATIVO A UN EXPEDIENTE.

SI NO TUVIERA FORMULARIO ESCRIBIRÍA:

SELECT 1
USE JURIDICO INDEX CLVE
...
...

@11,22 GET CLAVE_EXPEDIENTE
READ
SEEK CLAVE_EXPEDIENTE

IF FOUND()
....
ELSE
...
ENDIF

ESTIMADOS EXPERTOS ¿CUAL SERIA EL CODIGO EN EL INTERIOR DEL BOTON
"BUSCAR".

MI FORMULARIO ES SIMILAR A LO SIGUIENTE

NUMERO DE EXPEDIENTE [ ]
JUZGADO [ ]
DISTRITO [ ]
DEMANDANTE [ ]


DESPUES DE UTILIZAR LOS BOTONES "NUEVO", "GRABAR", "MODIFICAR"
LOS CAMPOS APARECEN EN PANTALLA, PERO HASTA ESE PUNTO NO HE UTILIZADO VARIABLES DE MEMORIA.


¿PORQUE MOTIVO CUANDO TRATO DE HACER UN LLAMADO A LAS FUNCIONES GET() Y READ, LOS DATOS APARECEN DEBAJO DEL FORMULARIO?
YO QUIERO QUE CUANDO HAGA LA PETICION DEL NUMERO DEL EXPEDIENTE, EL READ SE REALICE EN EL ESPACIO QUE APARECE EN EL FORMULARIO, Y NO DEBAJO DE ESTE TAL Y COMO ME ESTA OCURRIENDO.

HACIENDO ESTO CREO QUE EL CODIGO RESTANTE SERÍA
THISFORM.REFRESH

PERO, RECALCO, ME FALTA ESA ESTRATEGIA PARA SOLICITAR EL CONTENIDO DE UNA VARIABLE DE MEMORIA QUE UBIQUE EL REGISTRO EN CUESTION.

MUCHAS GRACIAS POR LA ASESORIA QUE PUEDAN BRINDARME.
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:BUSCAR REGISTRO USANDO BOTON DE COMANDO EN FOXP

Publicado por xx (378 intervenciones) el 10/11/2010 02:46:37
creo que no deberias mezclar las sentencias @GET ... READ con los objetos y formularios, no son compatibles

lo que basicamente deberias hacer en tu evento click del boton es

THISFORM.COMMAND1.CLICK()
_key=THISFORM.TEXT1.VALUE &&copiar la clave a buscar en una variable

SELECT TABLAX &&seleccionar la tabla en la que buscaras la clave
SET ORDER TO 1 IN TABLAX
GO TOP
IF SEEK( _key )
*si encontro mostrar el registro
ELSE
*sino mostrar mensaje o volver a pedir
ENDIF

....

RETURN
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:BUSCAR REGISTRO USANDO BOTON DE COMANDO EN FOXP

Publicado por MARIO SERNA LOPEZ (21 intervenciones) el 11/11/2010 03:43:00
YA VOY SALIENDO DE MI DUDA, ANOTE EL CODIGO QUE ME ENVIASTE PERO...

EN MI FORMULARIO TENGO VARIOS TEXTBOX, ALGUNOS DE LOS CUALES ESTAN ASI:

TXTEXPEDIENTE

TXTFECHA_INICIO

TXTJUZGADO

TXTSECRETARIA

SON LOS CAMPOS DE MI TABLA.

El boton denominado "BUSQUEDA"esta nombrado como COMMAND10
y creo que eso no interesa porque al correr el formulario no marco error en COMMAND1.

El ultimo detalle se presenta en TEXT1, puesto que hasta ahora no lo he definido.

Al darme cuenta de eso decidi elmininar el TXTEXPEDIENTE, y en su lugar anotar un textbox que inmediatamente fue nombrado por el sistema como TEXT1

THISFORM.COMMAND1.CLICK()
_key=THISFORM.TEXT1.VALUE

al ejecutar el formulario, el cursor no esta posicionado en el area del TEXT1, asi que tengo que posicionar el cursor en esa area y escribir el numero de expediente, pero no ocurre nada.

¿que puedo hacer ahi?

Segunda pregunta. Si eliminé el cuadro de texto TXTEXPEDIENTE (campo de la base de datos), cuando ejecuto el formato, ya no funcionarn mis botones de GUARDAR NUEVO BORRAR, CANCELAR, porque logicamente TEXT1 esta alterando todo lo hecho.

¿cómo puedo mejorar el contenido del boton DENOMINADO "BUSCAR" sin que ello afecte el código ingresado a otros botones?

Espero puedas darme las respuestas que busco.

Muchas Gracias
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:BUSCAR REGISTRO USANDO BOTON DE COMANDO EN FOXP

Publicado por xx (378 intervenciones) el 11/11/2010 18:47:49
selecciona todo esto y copialo a un archivo de texto creado mediante la sgte sentencia en el foxpro MODI COMM XX.TXT desde la linea de comandos del FOXPRO

****************************
* Bueno segun lo que entiendo pretendes hacer una especie de ABM c/opcion de busqueda, te explico
* rapidamente como yo hice mi ABM ejemplo en MySQL
* (http://www.solocodigo.com/foros/viewtopic.php?f=43&t=42701, es una prueba) pero lo tengo hecho
* y funcionando para tablas nativas DBF's.
*
* Funciona asi: al cargar el formulario entra en modo de navegación (puedes desplazarte al
* siguiente-anterior-inicio-final) mientras estas en modo navegación todos los controles de
* campos (TEXTBOX) estan deshabilitados es decir THISFORM.EDT_.ENABLED=.F. presionando
* el boton localizar habilita el campo (TEXTBOX) relacionado con el orden de navegacion
* (CODIGO o NOMBRE) luego ingresas el valor a buscar ya sea un codigo o un nombre y presionas
* el mismo boton solo que ahora se titula BUSCAR y este lee el valor que has ingresado
* en el campo (TEXTBOX) y localiza el registro en la tabla y automaticamente lo carga en
* los campos (TEXTBOX).
*
* Segun tu formulario que no tengo idea de como trabaja o que es lo que tiene lo que debes
* hacer cuando vas a buscar un registro, solo habilitas el TEXTBOX y el COMMAND10 en el que
* el usuario va a ingresar la clave a buscar ejemplo TXTEXPEDIENTE puedes codificar
* en el evento VALID es decir:
*
* *THISFORM::TXTEXPEDIENTE::VALID() &&esto identifica al evento valid del
* &&objeto TXTEXPEDIENTE y no debes tipearlo en ninguna parte
* IF THISFORM.TXTEXPEDIENTE.VALUE<1
* MESSAGEBOX( [Nro EXPEDIENTE INVALIDO!], 16, [ERROR] )
* RETURN .F.
* ENDIF
* RETURN
*
* si quieres validar o controlar que por ejemplo no ingresen nros negativos o cero o letras segun
* sea el caso, y luego el usuario intiuitivamente vera el boton BUSCAR (COMMAND10) habilitado y
* ningun otro control habilitado entonces obligas a intuir que debe pulsarlo y es alli donde
* programas tu busqueda que deberia leer la clave a buscar y enviar el la sentencia de busqueda
* *THISFORM.COMMAND10.CLICK() &&esto identifica al evento click del objeto COMMAND10/BUSQUEDA
* &&y no debes tipearlo en ninguna parte
* _key=STR(THISFORM.TXTEXPEDIENTE.VALUE,6,0) &&esto lo que hace es copiar a la variable _key
* &&el campo ingresado por el usuario (clave a buscar)
* *suponiendo que sea del tipo numerico y el indexado de tu tabla
* *esta como INDEX ON STR(EXPEDIENTE,6,0) TAG ...
* SELECT TABLA &&selecciona la tabla en la que buscaremos la clave
* SET ORDER TO 1 &&activa el orden en el que la clave es el EXPEDIENTE
* GO TOP &&envia el puntero al inicio
* IF !SEEK( _key ) &&envia la sentencia de busqueda y si encuentra muestra
* THISFORM.TXTEXPEDIENTE.SETFOCUS() &&vuelve a pedir la clave al usuario
* MESSAGEBOX( [EXPEDIENTE INEXISTENTE],16,[ERROR])
* RETURN
* ENDIF
* *ENCONTRO EL REGISTRO
* THISFORM.TXTFECHA_INICIO.VALUE =FECHA_INICIO
* THISFORM.TXTJUZGADO.VALUE =JUZGADO
* THISFORM.TXTSECRETARIA =SECRETARIA
*
* Ojala haya sido claro!!, si deseas podrias enviar tu formulario y tu tabla a mi correo para poder ayudarte,
* de lo contrario sigue preguntando a ver que solucion le encontramos
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:BUSCAR REGISTRO USANDO BOTON DE COMANDO EN FOXP

Publicado por MARIO SERNA LOPEZ (21 intervenciones) el 13/11/2010 01:14:06
Podrias enviarme tu email para enviarte mi formulario y la tabla de expedientes?

Te agradezco de antemano tu ayuda
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:BUSCAR REGISTRO USANDO BOTON DE COMANDO EN FOXP

Publicado por MARIO SERNA LOPEZ (21 intervenciones) el 13/11/2010 04:25:31
¿Cual es tu correo para que te mande el formulario y la tabla que estoy utilizando?

mi correo es [email protected]
(tres ceros)
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:BUSCAR REGISTRO USANDO BOTON DE COMANDO EN FOXP

Publicado por xx (378 intervenciones) el 17/11/2010 13:21:14
Bueno estuve unos dias fuera, pero si no has resuelto aun tu problema uno de mis correos es [email protected] y veremos que podemos hacer, con un poco de paciencia todo se puede resolver
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:BUSCAR REGISTRO USANDO BOTON DE COMANDO EN FOXP

Publicado por MARIO SERNA LOPEZ (21 intervenciones) el 14/11/2010 18:56:08
cual es tu correo para mandarte los datos

Gracias
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:BUSCAR REGISTRO USANDO BOTON DE COMANDO EN FOXP

Publicado por MARIO SERNA LOPEZ (21 intervenciones) el 14/11/2010 19:14:14
¿Donde esta la falla? Aqui esta el codigo que tiene el boton de comando "Buscar". REalmente si funciona, pero cuando lo integro junto con los demas botones de "NUEVO" "GRABAR", ETC, y estoy grabando un registro, me doy cuenta que piero la información del número de expediente, ya que no se graba este, sino unicamente los demas campos.


<BOTON BUSCAR>
SELECT legalfiles
SET ORDER TO 1
SET FILTER TO expediente<>0

SEEK ThisForm.txtExpediente.value
IF found()
thisform.txtExpediente.Value = expediente
thisform.txtFecha_Inicio.value=Fecha_inicio
thisform.txtFecha_Radic.value=Fecha_Radic
thisform.txtTipo_Juicio.value=Tipo_Juicio
thisform.txtTipo_juzgado.value=Tipo_Juzgado
thisform.txtNum_Secreta.value=Num_Secreta
thisform.txtDistrito_Judicial.value=Distrito_Judicial
thisform.txtClas_promuev.value=Clas_Promuev
thisform.txtClas_pasiv.value=Clas_pasiv
thisform.txtContenido_de.value=Contenido_de

ELSE
MESSAGEBOX("Expediente no registrado.",0,"Busqueda de Expedientes")
STORE 0 TO thisform.txtExpediente.value
store CTOD("00/00/00") to ThisForm.txtFecha_inicio.value
store CTOD("00/00/00") to ThisForm.txtFecha_Radic.value
STORE " " TO thisform.txtTipo_Juicio.value
STORE " " TO thisform.txtTipo_juzgado.value
STORE " " TO thisform.txtNum_Secreta.value
STORE " " TO thisform.txtDistrito_Judicial.value
STORE " " TO thisform.txtClas_Promuev.value
STORE " " TO thisform.txtClas_Pasiv.value
STORE " " TO thisform.txtContenido_de.value

ENDIF
thisform.txtExpediente.value=Expediente
thisform.txtExpediente.setfocus


EL BOTON NUEVO TIENE:

APPEND BLANK
THISFORM.REFRESH

EL BOTON GRABAR DICE:
=TABLEUPDATE(.T.)
THISFORM.REFRESH



Espero puedas encontrar la respuesta.
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