SoloCodigo

Programación General => Visual FoxPro => Mensaje iniciado por: sleipnir en Sábado 22 de Octubre de 2005, 07:06

Título: El Seek No Me Esta Funcionando
Publicado por: sleipnir en Sábado 22 de Octubre de 2005, 07:06
Bueno tengo una pequeña aplicacion que sorprendentemente me esta dando dolor de cabeza.

En El Proyecto tengo un contenedor (planilla_de_empleados) con 3 tablas

departamentos => (depto (indice principal))
personal => (depto (indice normal) y identidad (indice principal))
planilla => (identidad (indice normal) y nplan (indice normal))

La tabla de departamentos esta unida a personal por el campo depto y la tabla de personal esta unida a la de planilla por el campo identidad.

Lo que ando buscando es crear un formulario para agregar los departamentos para que de esa forma jalo los datos introducidos desde la tabla depto y no tenga que escribir cada campo en el combobox de depto en el formulario para agregar empleados con la tabla de personal. Este formulario solo tiene un campo (depto).

Lo raro es que tengo 4 botones y en ellos uso el seek para m.depto pero nunca encuentra el registro y siempre ejecuta el append blank y el gather memvar, pero nunca solo el gather memvar. Mire la tabla y me esta guardando el registro la primera vez pero como nunca lo encuentra no lo puedo eliminar.

Este es el codigo

----------------------------------------

Form1.Load
Código: Text
  1.  
  2. select departamentos
  3. scatter memvar blank
  4. set order to depto
  5.  

txtDepto.valid
Código: Text
  1.  
  2. if empty(m.depto)
  3.   retu .t.
  4. endif
  5. if seek(m.depto)
  6.   scatter memvar
  7.   thisform.refresh
  8.   thisform.commandgroup1.command1.enabled=.t.  
  9.   thisform.commandgroup1.command2.enabled=.t.
  10.   thisform.commandgroup1.command3.enabled=.t.
  11.   retu .t.
  12. else
  13.   thisform.commandgroup1.command1.enabled=.t.
  14.   thisform.commandgroup1.command2.enabled=.f.
  15.   thisform.commandgroup1.command3.enabled=.t.
  16.   retu .t.
  17. endif
  18.  
  19.  

txtDepto.Lostfocus
Código: Text
  1.  
  2. if empty(m.depto)
  3.   scatter memvar blank
  4.   thisform.commandgroup1.command1.enabled=.f.
  5.   thisform.commandgroup1.command2.enabled=.f.
  6.   thisform.commandgroup1.command3.enabled=.f.
  7.   thisform.commandgroup1.command4.setfocus
  8. endif
  9. thisform.refresh
  10.  
  11.  

Command1.click Salvar
Código: Text
  1.  
  2. if seek(m.depto)
  3.   gather memvar
  4. else
  5.   append blank
  6.   gather memvar
  7. endif
  8. scatter memvar blank
  9. thisform.commandgroup1.command1.enabled=.t.
  10. thisform.commandgroup1.command2.enabled=.t.
  11. thisform.commandgroup1.command3.enabled=.t.
  12. thisform.txtdepto.setfocus
  13. thisform.refresh
  14.  
  15.  

Command2.click Eliminar
Código: Text
  1.  
  2. if seek(m.depto)
  3. delete
  4. pack
  5. endif
  6. scatter memvar blank
  7. thisform.commandgroup1.command1.enabled=.t.
  8. thisform.commandgroup1.command2.enabled=.t.
  9. thisform.commandgroup1.command3.enabled=.t.
  10. thisform.txtdepto.setfocus
  11. thisform.refresh
  12.  
  13.  

Command3.click Cancelar
Código: Text
  1.  
  2. scatter memvar blank
  3. thisform.commandgroup1.command1.enabled=.t.
  4. thisform.commandgroup1.command2.enabled=.t.
  5. thisform.commandgroup1.command3.enabled=.t.
  6. thisform.txtdepto.setfocus
  7. thisform.refresh
  8.  
  9.  

command4.click Salir
Código: Text
  1.  
  2. thisform.release
  3.  
  4.  

Como ven el formulario no es nada complejo, y me hace pensar que talvez el vfp se haya dañado por alguna razon. Por cierto estoy usand VFP 6.0
Título: Re: El Seek No Me Esta Funcionando
Publicado por: arielb en Lunes 24 de Octubre de 2005, 19:59
intenta de esta forma

Código: Text
  1. set order depto
  2. seek(m.depto)
  3. if found()
  4.   scatter memvar
  5.   thisform.refresh
  6.   thisform.commandgroup1.command1.enabled=.t.  
  7.   thisform.commandgroup1.command2.enabled=.t.
  8.   thisform.commandgroup1.command3.enabled=.t.
  9.   retu .t.
  10. else
  11.   thisform.commandgroup1.command1.enabled=.t.
  12.   thisform.commandgroup1.command2.enabled=.f.
  13.   thisform.commandgroup1.command3.enabled=.t.
  14.   retu .t.
  15. endif
  16.  
Título: Re: El Seek No Me Esta Funcionando
Publicado por: Cyclop en Lunes 31 de Octubre de 2005, 17:24
Por que no haces esto

txtDepto.valid

Código: Text
  1. if seek(This.Value)
  2.   scatter memvar
  3.   thisform.refresh
  4.   thisform.commandgroup1.command1.enabled=.t.  
  5.   thisform.commandgroup1.command2.enabled=.t.
  6.   thisform.commandgroup1.command3.enabled=.t.
  7.   retu .t.
  8. else
  9.   thisform.commandgroup1.command1.enabled=.t.
  10.   thisform.commandgroup1.command2.enabled=.f.
  11.   thisform.commandgroup1.command3.enabled=.t.
  12.   retu .t.
  13. endif
  14.  
  15.  


Salu2
Título: Re: El Seek No Me Esta Funcionando
Publicado por: SystemDeveloper en Sábado 12 de Noviembre de 2005, 17:58
Hola que tal:

3 Cosas


- seek(m.depto)
intentalo con una variable

dato=m.depto
seek(dato)

Intentalo Haber que pasa

- Pack

este comando solo se usa en modo exclusivo si la aplicacion es mono usuario bacan, de los contrario no es recomendable.

y si sigues con tus problemas

descarta el scatter memvar y el gather  memvar y trabajalo normal, son mejores los cursos Osea Full SQL

en el ultimo de los casos solo trabajalo si los memvar.

alli estoy seguro de que no tendras problemas


select tabla
set order to tag indice

cad="carlos"
seek(cad)

y eso si lo hara


saludos carlos lima- péru