SoloCodigo

Programación General => Visual FoxPro => Mensaje iniciado por: shakka en Lunes 26 de Septiembre de 2005, 09:03

Título: Comenzando En Vfox
Publicado por: shakka en Lunes 26 de Septiembre de 2005, 09:03
resulta que he retomado comenzar a programar en visual fox

quisiera saber si alguien es tan amable de poder explicarme como se programa en fox,

1)   en mi caso lo que hice para empezar es una base de datos y una tabla y ademas he creado un fomulario como interface con dicha tabla, pero como hago para que los controles(p.e los textbox) obtengan el contenido de los campos de la tabla.
2)   Como grabo los datos contenidos en los controles a la tabla.
Citar
Tabla-> TStd.dbf
Estrctura:
[nombre]   [tipo]  [ancho]
Std_code   carácter   8
Std_name   carácter   30
Std_lname   carácter   30
Std_age   entero  4
Título: Re: Comenzando En Vfox
Publicado por: Widark en Lunes 26 de Septiembre de 2005, 15:37
Que tal mbrenes!

1. Primero debes enlazarlos, como una base de datos normal.
2. Hay una funcion TABLEUPDATE() y TABLEREVERT(), pones el buffer de la en 3 y listo ya podes actualizar o cancelar alguna acción.
Título: Re: Comenzando En Vfox
Publicado por: DrakerDG en Lunes 26 de Septiembre de 2005, 16:26
:comp: Una forma relativamente sencilla es incluir la(s) tabla(s) de tu base de datos en el Data Environment (Entorno de datos), el procedimiento es hacer click derecho sobre tu formulario y seleccionas esta opción.  Te aparece una ventana que dice Data Environment - Nombre de tu formulario, con el botón derecho sobre la superficie vacía de esta ventana, activas un menú en el cual con la opción Add puedes agregar la tabla de la base de datos que quieras.  Si en tu proyecto tienes ya una base de datos automáticamente aparece esta como opción por defecto para seleccionar.

Ya teniendo tus tablas o vistas en tu entorno de datos, en la propiedad ControlSource seleccionas el campo que tu quieras enlazar con el control y así sucesivamente.   Si la propiedad del control ReadOnly esta en False, al modificar el valor del control automáticamente se modifica el valor enlazado con la tabla.

Espero te sirva :hola:
Título: Re: Comenzando En Vfox
Publicado por: shakka en Lunes 26 de Septiembre de 2005, 17:49
la opcion que me dio DrakerDG parece sencilla por la cual optare primero, pero esta interesente trabajar con "Buffering" aunque a documentarme mas...

seguramente ahi les estare molestando!

gracias :comp:
Título: Re: Comenzando En Vfox
Publicado por: Cyclop en Lunes 26 de Septiembre de 2005, 20:31
Trabajar con buffering con 1 a 2 tablas es bueno pero con mas es una porqueria mejor usa tu RLock() y punto, por que a veces te da unos errores que te parten la cabeza en 2

Salu2

Cyclop
Título: Re: Comenzando En Vfox
Publicado por: shakka en Miércoles 28 de Septiembre de 2005, 05:57
pues si, el DataEnviromnt funcina bien, pero ahora el problema que tengo es que quiero  modificar los valores de las propiedades de ciertos controles en tiempo de ejecucion.

Caso concreto: Evento Load del form pricipal (el unico :lol: )

Código: Text
  1. txtStdCode.Enabled=.T.
  2.  

pero me aparece un error al ejecutar el formulario:

Error del programa
"No se encuentra el objeto TXTSTDCODE" :blink:

y en el debugger del "Zorro"...

Citar
[Seguimiento]
Set Default To C:\TestVFox
Citar
[Locales]
nombre   valor    tipo
tstd         .NULL.  0
:ph34r:

alguien sabe que puede ser

por aquello que necesiten mas info:

el proyecto es muy pequeño
Título: Re: Comenzando En Vfox
Publicado por: DrakerDG en Miércoles 28 de Septiembre de 2005, 09:35
:comp: En el evento Load no puedes llamar propiedades de ningun control del formulario, pues los controles aún no existen, es decir no están cargados.  Esto lo puede hacer en el evento Init del formulario.  Además el nombre del control por si solo no es reconocible, por lo que tiene que tener como prefijo el objeto al cual pertenece, en este caso el formulario, es decir:

Código: Text
  1.  
  2. * En el evento Init del formulario
  3. THISFORM.txtStdCode.Enabled=.F.
  4.  
  5.  
  6.  

Si en dado caso son varios los controles a los cuales les vas a cambiar alguna propiedad puedes usar el comando WITH de la siguiente forma

Código: Text
  1.  
  2. * En el evento Init del formulario
  3. WITH THISFORM
  4.   .txtStdCode.Enabled=.F.
  5.   * Otro controll....      
  6. ENDWITH
  7.  
  8.  
  9.  

En el comando del boton cmdPrevius:

Código: Text
  1.  
  2. If Bof()
  3.   Go Top
  4.   TStd.Refresh
  5. Else
  6.   Skip -1
  7.   if Bof()
  8.     Go Top
  9.     ThisForm.cmdPrevious.Enabled=.F.
  10.     ThisForm.cmdNext.Enabled=.T.
  11.   Else
  12.     TStd.Refresh      
  13.   EndIf
  14. EndIf
  15.  
  16.  
  17.  

Y en el boton cmdNext:

Código: Text
  1.  
  2. If Eof()
  3.   Go Bottom
  4.   TStd.Refresh
  5. Else
  6.   Skip 1
  7.   if Eof()
  8.     Go Bottom
  9.     ThisForm.cmdNext.Enabled=.F.
  10.     ThisForm.cmdPrevious.Enabled=.T.
  11.   Else
  12.     TStd.Refresh      
  13.   EndIf
  14. EndIf
  15.  
  16.  
  17.  
Título: Re: Comenzando En Vfox
Publicado por: shakka en Miércoles 28 de Septiembre de 2005, 17:16
Citar
Además el nombre del control por si solo no es reconocible, por lo que tiene que tener como prefijo el objeto al cual pertenece

malas costumbres que me dejo el visual ba :s  :angry:

Gracias a todos

Saludos!