FoxPro/Visual FoxPro - Ayuda con Ingreso y Busqueda

 
Vista:

Ayuda con Ingreso y Busqueda

Publicado por santiago (35 intervenciones) el 05/01/2004 16:26:29
Que tal amigos : Nuevamente recurro a sus sabios consejos a ver si me pueden ayudar con dos problemas que tengo. He creado un formulario para mantenimiento de los registros osea para Ingreso, Consulta y modificacion, Busqueda, etc.
1)Al ingresar una nueva orden utilizo el valid y a pesar que no existe la orden me da como que ya existe y haciendo un analisis de ello me di cuenta que al momento de ingresar una orden directamente lo GRABA y es por esa razon que siempre me indica que YA EXISTE DICHA ORDEN, como le hago para evitar suceda esto y no grabe. Los 2 camos de validacion tienen la propiedad CONTROLSOURCE con la tabla relacionada.
2)Para BUSCAR una orden he creado un formulario adicional de busqueda, la validacion lo hace a la perfeccion pero cuando encuentra una orden y quiero que los demas datos de dicha orden apararezcan en el formulario principal no VIZUALIZA EL REGISTRO ENCONTRADO, he probrado utilizando SCATTER MEMVAR, THISFORM.REFRESH,GOTO Registro, utilizo el SEEK para la busqueda.
Espero que alguno de ustedes me pueda ayudar a solucionar los dos problemas planteados.
Desde ya les agradezco la atencion brindada.
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 Ingreso y Busqueda

Publicado por Luis Martinez (32 intervenciones) el 06/01/2004 20:57:08
Hola,

Respuesta 1: me imagino que en la validación de la orden utilizás un seek o locate.... y porsupusto cuando enlazas un campo de una tabla a un controlsource el valor ingresado es almacenado en el campo justo antes de ejecutarse el valid() del control, es mejor utilizar variables con Scatter Memvar y lugo remplazar los campos de la tabla. Pero te voy a dar varias alternativas:

a) Si creas el campo nro. de orden como indice principal esté no aceptará valores repetidos y utilizando almacenamiento de tablas en buffer no tendrás que estár validando ya que al realizar el Tableupdate se producirá un error de violación de clave principal.

b) Si no te gusta la primera idea o ya hicistes mucho trabajo para cambiar de tecnica, prueba lo siguiente: Antes de ejecutar la busqueda de la orden, guarda en una variable el nro. del registro actual de la taba y luego realizas la siguiente busqueda:

En método valid()

Local lnRegAct

SELECT tabla_ordenes
lnRegAct = Recno()
*--Buscamos la orden pero con diferente nro de regsitro
LOCATE FOR orden = this.value and recno() != lnRegAct

IF FOUND()
*-- Si found es verdadero quiere decir que existe otro registro con el
*--mismo numero de orden
ENDIF

*--y no olvides posicionarte nuevamente el en registro
GO lnRegAct
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