FoxPro/Visual FoxPro - uso de diversas tablas en un solo form

   
Vista:

uso de diversas tablas en un solo form

Publicado por Angie (8 intervenciones) el 02/04/2013 02:30:51
Hola programadores aquí una novata solicitando apoyo.
les cuento que tengo el siguiente reto actualizar un sistema creado en fox pro 2.5 a VFP y ya llevo un par de form creados ahora que me atore en uno donde manejo 3 tablas en el mismo form y tengo el siguiente código

If !usu_func (‘c_catcos.spr’)
Wait window ‘No estas autorizado a utilizar esta opcion’ timeout 1.5
Return
Endif
Push menú_msysmenu

Do m_acce.mpr
Close data
Select 1
Do conver2 with ‘catcos’,1,’cos’
Select 2
Do conver2 with ‘catpro’,1,’cli’
Select 3
Do conver2 with ‘proces’,1,’pro’

Define window v_con from 1,0 to 24,79 color
Sche 10
Store ‘’ to l_error, descript, campo, llave
Show gets

esto es de la versión anterior y lo que entiendo es que para poder llamar mis tablas
debo hacer algo así

select 1
use catcos.dbf * tabla1
select 2
use catpro.dbf *tabla2
select 3
use proces.dbf * tabla 3

pero me dice que esta en uso y no me deja correrlo
si me pudieran orientar un poco se los agradeceré.
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

uso de diversas tablas en un solo form

Publicado por Saul (676 intervenciones) el 02/04/2013 05:35:50
Hola Angie:

Nada mas cerda de la verdad, efectivamente lo que te dice que ya tienes abierta las tablas, me imagino que las abres en tus procedimientos que tienes con anterioridad.

Te quiero comentar que la programación de Visual Fox Pro no tiene nada que ver con la programación de un PRG, puesto que lo que estas haciendo es sub utilizar el Visual fox pro.

Mi consejo es aquí mismo en esta pagina busca en Cursor y Manuales un manual de Visual fox pro, para que veas como es la forma adecuada de programar.

Luego cuando ya tengas un concepto de que es programación orientada a objetos búscate en código Fuente, hay una aplicación ya terminada, (creo que se llama maquinaria), con esto se te ampliara tu idea y se te ara mucho mas fácil la migración.

Lo que tu estas tratando de hacer es copiar los procedimientos y rutinas hacia visual fox y te digo si esta bien, pero no todo te funcionara como tu quisieras, lo vas a tener que re diseñar.

Saludos

Cualquier cosa ya sabes estoy a la orden

saul_ha@hotmail.com
(buscame en Skype saulsystemas)

Bye
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

uso de diversas tablas en un solo form

Publicado por Many (332 intervenciones) el 02/04/2013 05:36:43
My bien, Angie

No te la complique mi reina, lo que tiene que hacer es conectar las tablas que quiera usar con el form, no importa la cantidad.

1.- clic derecho al form.
2.- Data environment
3- Buscar la carpeta donde están las tablas, clic a la tabla y luego ok

Si son varias tablas solo tiene que tomar la opción other y luego la agrega una tras otra.

Estas quedan junto al form y donde quiera usar alguna solo tiene que decir
select + el nombre de la tabla

Si tiene dudas, escribe nuevamente

Listo, Adiós errores y adiós Angie, hasta pronto.
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

uso de diversas tablas en un solo form

Publicado por Angie (8 intervenciones) el 03/04/2013 00:17:41
gracias a ambos por sus respuestas y sugerencias claro las pondré en practica

ahora tengo otro detalle quiero programar el botón modificar y quiero que también se vea reflejado en las otras tablas que tengo en la misma forma no se si este código este correcto podrían hecharle un ojo y comentar que les parece

CASE opcx = 6
SELECT cli
SELECT pro
SELECT cost
thisform.mAQUILERO1.Enabled = .F.
thisform.esTILO1.Enabled = .T.
thisform.cosTO1.Enabled = .T.
thisform.proCESO1.Enabled = .T.
thisform.butTONSET1.command6.Caption = "Guardar"
thisform.buTTONSET1.command8.Caption = "Cancelar"
ELSE
GATHER MEMVAR
thisform.mAQUILERO1.Enabled = .T.
thisform.esTILO1.Enabled = .F.
thisform.cosTO1.Enabled = .F.
thisform.proCESO1.Enabled = .F.
thisform.butTONSET1.command6.Caption = "Modificar"
thisform.butTONSET1.command8.Caption = "Salir"
ENDIF

esta dentro de un case porque tengo mas botones, pero bueno lo que quiero saber es si de esa forma es como debo llamar a mis otras tablas para que tambien afecten los cambios?
Espero sus comentarios.
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
Imágen de perfil de Edgar Zambrano

uso de diversas tablas en un solo form

Publicado por Edgar Zambrano (72 intervenciones) el 02/04/2013 18:03:25
Angie lo correcto es que al cerrar un formulario cierres las tablas

utiliza el metodo QueryUnload

y escribe este comando

close tables all


esto es para que cuando abras otro formulario que va a utilizar la misma tabla en la misma instancia no te arroje error, y ademas ahorras unos cuantos bytes en memoria al no tener todas las tablas cargadas
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

uso de diversas tablas en un solo form

Publicado por Angie (8 intervenciones) el 03/04/2013 00:28:24
Gracias lo tendré en cuenta
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

uso de diversas tablas en un solo form

Publicado por Many (332 intervenciones) el 03/04/2013 06:37:32
Angie, entiendo tu preocupacion, lastima que no tengo mucho tiempo ahora.

Segun veo esta arrastrando muchas cosas heredadas de fox para msd o dos (2.5, 2.6) etc. yo lo hacia pero luego me comian los problemas aqui las cosas cambian de manera significativa, no es que es dificil pero debe saberlo.

Sobre tu problema de modificar lo puede hacer en el mismo form de guardar y con los mismos codigos que ya tiene.

a la hora de guardar solo tiene que hacer una busqueda para ver si existe o no.

si no existe lo manda a agregar
si existe lo manda a modificar copiando los mismos codigos

select empleados
locate for codigo = thisform.codigo.value
if !found()
append blank
replace .....
replace .....
else

aqui no usa el append blank

replace .....
replace .....
endif

Esto funciona de verdad


esto es todo Angie.

Si estuviera cerca te ayudara.
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

uso de diversas tablas en un solo form

Publicado por Angie (8 intervenciones) el 04/04/2013 00:32:03
Many de acuerdo al mensaje anterior asi acomode mi codigo pero no estoy segura de a que te refieres con "codigo" asi que lo tome como al nombre del campo de la tabla princiap y que esta como llave aun asi me marca error.

SELECT catpro
LOCATE FOR maquilero = thisform.mAQUILERO1.Value
*DO WHILE
*thisform.maQUILERO1.Enabled = .T.
*thisform.esTILO1.Enabled = .T.
*thisform.cosTO1.Enabled = .T.
*thisform.proCESO1.Enabled = .T.

IF FOUND()
APPEND BLANK
replace catpro.cliente WITH thisform.mAQUILERO1.Valid
replace catcos.estilo WITH thisform.eSTILO1.Valid
replace catcos.costo WITH thisform.cOSTO1.Valid
replace proces.codigo WITH thisform.pROCESO1.Valid
ELSE
thisform.mAQUILERO1=""
thisform.eSTILO1 =""
thisform.cOSTO1 =""
thisform.pROCESO1=""
ENDIF

Me pueden decir si escribi algo mal porfavor
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

uso de diversas tablas en un solo form

Publicado por Many (332 intervenciones) el 04/04/2013 01:21:26
Ya està muy llegando Angie.

Este tiene algunos problemas, debajo te pongo la correccion
SELECT catpro
LOCATE FOR maquilero = thisform.mAQUILERO1.Value
IF FOUND()
APPEND BLANK
replace catpro.cliente WITH thisform.mAQUILERO1.Valid
replace catcos.estilo WITH thisform.eSTILO1.Valid
replace catcos.costo WITH thisform.cOSTO1.Valid
replace proces.codigo WITH thisform.pROCESO1.Valid
ELSE
thisform.mAQUILERO1=""
thisform.eSTILO1 =""
thisform.cOSTO1 =""
thisform.pROCESO1=""
ENDIF

----------------
Lee esto:
1.-
La tabla se llama cappro
tiene un campo en esta tabla llamado codigo
tiene otro campo llamado nombre.

2.-
Tiene un text box llamado codigo
Tiene otro text box llamado nombre (esto es en el formulario)

para guardar solo debe hacer lo siguiente en todos los formularios que maneje a partir de ahora:

SELECT catpro
LOCATE FOR for codigo = thisform.codigo.value
IF !FOUND()
APPEND BLANK
replace codigo with thisform.codigo.value
replace nombre with thisform.nombre.value
ELSE
replace codigo with thisform.codigo.value
replace nombre with thisform.nombre.value
ENDIF

De esta manera si no lo encuentra lo agrega y si lo encuentra lo modifica

precaución para evitar errores :
Si un campo en la tabla está numérico en el form también debe estar numérico. le da un clic derecho al text box toma la opción builder y lo pone numérico.

Si tiene problemas escribe de inmediato, quiero ayudarte x k tu está luchando por aprender.

ok
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

uso de diversas tablas en un solo form

Publicado por neo (1601 intervenciones) el 07/04/2013 05:02:50
Todo lo veo muy bien, salvo lo de "locate" porque no mejor se cambia el "locate" por "Seek"

Para que en un futuro no tenga problemas a la hora de trabajar en red.

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

uso de diversas tablas en un solo form

Publicado por Many (332 intervenciones) el 08/04/2013 05:21:53
Gracias Neo, estoy de acuerdo contigo lo hice tan rapido que no pense en el futuro.

Recordarte a Angie que para usar el Seek debe estar indexado por por el campo que desee buscar.

Un saludo.
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