FoxPro/Visual FoxPro - recibos en formularios

   
Vista:

recibos en formularios

Publicado por agustina (2 intervenciones) el 16/09/2010 22:43:22
holaa... tengo una cosulta, ya hace bastante que estoy renegando con un programa y siempre tiene un error distinto. estoy haciendo un formulario en el cual tengo un boton que es "aceptar" el cual hace lo siguiente:
ACLARO: "ctasctes" es el nombre de la tabla. numsocio, nomsocio, fecha, importe y mesaporta son los nombres de los campos de la tabla.

el problema que tengo con este boton es que cuando apreto el boton aceptar en el formulario, no me reemplaza los datos del los texts en la tabla... lo he probado varias veces y no tuve solucion.

STORE SPACE (10) TO A
STORE SPACE (30) TO B
STORE 0 TO C
STORE 0 TO D
A=thisform.text1.Value
C=thisform.text2.Value
B=thisform.text3.Value
D=thisform.text4.Value
USE ctasctes INDEX numsocio, nomsocio, fecha, importe, mesaporta
IF thisform.Optiongroup1.Option1.value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Enero"
ENDIF
IF thisform.optiongroup1.option2.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Febrero"
ENDIF
IF thisform.optiongroup1.option3.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Marzo"
ENDIF
IF thisform.optiongroup1.option4.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Abril"
ENDIF
IF thisform.optiongroup1.option5.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Mayo"
ENDIF
IF thisform.optiongroup1.option6.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Junio"
ENDIF
IF thisform.optiongroup1.option7.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Julio"
ENDIF
IF thisform.optiongroup1.option8.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Agosto"
ENDIF
IF thisform.optiongroup1.option9.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Septiembre"
ENDIF
IF thisform.optiongroup1.option10.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Octubre"
ENDIF
IF thisform.optiongroup1.option11.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Noviembre"
ENDIF
IF thisform.optiongroup1.option12.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Diciembre"
ENDIF
IF thisform.optiongroup1.option13.Value= 1 THEN
APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with "Todo el Año"
ENDIF
IF ISBLANK(thisform.text2.Value) THEN
MESSAGEBOX("Faltan rellenar datos")
thisform.text2.SetFocus ()
ENDIF
IF ISBLANK(thisform.text3.Value) THEN
MESSAGEBOX("Indique el número de socio")
thisform.text3.SetFocus ()
ENDIF
IF ISBLANK(thisform.text4.Value) THEN
MESSAGEBOX("Falta completar el nombre del socio")
thisform.text4.SetFocus ()
ENDIF
CLOSE ALL

Otra de las cosas que queria preguntarles es como hago para que en el diseño de un informe al que yo quiero que tenga forma de recibo me reemplace los datos que yo puse en los texts del formulario anterior y no que me pida los campos, no se si me explique! ja pero en resumidas cuentas quiero saber si es posible hace un informe en el cual se puedan poner datos del formulario y no campos de una tabla!

espero que me hayan entendido y que me puedan ayudar!!!!

muchas gracias!!
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
Imágen de perfil de Mauricio

recibos en formularios

Publicado por Mauricio (1368 intervenciones) el 17/09/2010 00:45:27
Como bien dice el amigo Juanma, se esta trabajando VFP como si fuera FoxPro 2.6, desaprovechando las ventajas de VFP
Agustina, tienes que empezar a cambiar de mentalidad, aca es puro codigo y no aprovechas nada de las venajas de VFP,
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:recibos en formularios

Publicado por es_binario (757 intervenciones) el 17/09/2010 02:52:40
Mira este codigo.

*// intenta esto
IF EMPTY(thisform.text2.Value)
MESSAGEBOX("Faltan rellenar datos",64,"Faltan rellenar datos")
thisform.text2.SetFocus
RETURN
ENDIF
IF EMPTY(thisform.text3.Value)
MESSAGEBOX("Indique el número de socio",64,"Indique el número de socio")
thisform.text3.SetFocus
RETURN
ENDIF
IF EMPTY(thisform.text4.Value)
MESSAGEBOX("Falta completar el nombre del socio",64,"Falta completar el nombre del socio")
thisform.text4.SetFocus
RETURN
ENDIF

LOCAL mes_aporta as String

DO case
CASE thisform.Optiongroup1.Value = 1
mes_aporta = "Enero"
CASE thisform.Optiongroup1.Value = 2
mes_aporta = "Febrero"
CASE thisform.Optiongroup1.Value = 3
mes_aporta = "Marzo"
CASE thisform.Optiongroup1.Value = 4
mes_aporta = "Abril"
CASE thisform.Optiongroup1.Value = 5
mes_aporta = "Mayo"
CASE thisform.Optiongroup1.Value = 6
mes_aporta = "Junio"
CASE thisform.Optiongroup1.Value = 7
mes_aporta = "Julio"
CASE thisform.Optiongroup1.Value = 8
mes_aporta = "Agosto"
CASE thisform.Optiongroup1.Value = 9
mes_aporta = "Septiembre"
CASE thisform.Optiongroup1.Value = 10
mes_aporta = "Octubre"
CASE thisform.Optiongroup1.Value = 11
mes_aporta = "Noviembre"
CASE thisform.Optiongroup1.Value = 12
mes_aporta = "Diciembre"
OTHERWISE
MESSAGEBOX("Ocurrio un problema con el optiongroup",16,"NO SE REGISTRO")
RETURN && termina y no graba
ENDCASE

LOCAL A,B,C,D

A=ALLTRIM(thisform.text1.Value)
C=ALLTRIM(thisform.text2.Value)
B=thisform.text3.Value
D=thisform.text4.Value

USE ctasctes INDEX numsocio, nomsocio, fecha, importe, mesaporta

APPEND BLANK
REPLACE numsocio WITH C
REPLACE nomsocio WITH B
REPLACE fecha WITH A
REPLACE importe WITH D
replace mesaporta with mes_aporta

*// eso del uso index no lo he usado asi que lo deje igual, basicamente antes que nada validas los datos que tengan valor y te cambio tu cadena de if then por un simple do case, lo demas esta igual deberia de funcionarte.

saludos, y estoy de acuerdo con lo que dice Mauricio, cambia tu forma de pensar o dale una repasada a la guia del programador, tambien podrias cambiar el append blank por un insert o un update segun sea el caso.
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 Mauricio

Recibos en formularios

Publicado por Mauricio (1368 intervenciones) el 17/09/2010 07:30:41
Gracias amigo es_binario, por tus comentarios.
Para ayudar a Agustina,: pon tu correo y te enviare un formulario senciillo que esperaria te cambie tu manera de programar, le falta al form pero por algo se puede empezar.
PD. en vez de tanta pregunta para el mes , perfectamente se puede usar el campo fecha para capturar el mes tanto numerico como en letras, esto queda al gusto de la persona.
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:recibos en formularios

Publicado por agustina (2 intervenciones) el 17/09/2010 22:26:23
MUCHAS POR RESPONDER Y TAN RAPIDO!! VOY A PROBAR TODAS LAS INDICACIONES QUE ME DIERON. ESPERO PODER RESOLVER EL PROBLEMA. SI, CON MIS COMPAÑEROS SABEMOS QUE NO ES LA MEJOR MANERA DE PROGRAMAR, ES QUE HACE POCO NOS ESTAN ENSEÑANDO Y LA PERSONA QUE NOS ENSEÑA ESTA BASTANTE DESACTUALIZADA. ME GUSTARIA SABER DONDE PUEDO CONSEGUIR ESA GUIA DEL PROGRAMADOR QUE ME RECOMENDARON.
MUCHISIMAS GRACIAS DE NUEVO!!
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

RE:recibos en formularios

Publicado por Juan286 (179 intervenciones) el 17/09/2010 15:37:05
Pues lo unico que se me gace claro necesito ver el codigo para retifica es que no actualiza osea no refrescas los datos coloca el

thisform.refresh pero sino mandame una muestra del codigo .

Juan286@Hotmail.com
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:recibos en formularios

Publicado por victor perez (278 intervenciones) el 17/09/2010 18:36:05
Hola,

Yo creo que debes usar las utilidades de VFP6 o VFP9 para hacer esto que deseas.

SE ve como complicado tu codigo porque lo estas haciendo en lenguage puramente simbolico que usaba FOX inicialmente.

Ahora VFP es dirigido a objeto y es por eso que esta de moda, facil de programar la mayoria de las veces para actividades sencillas como esta que tu planteas.

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

RE:recibos en formularios

Publicado por victor perez (278 intervenciones) el 17/09/2010 18:43:42
Nuevamente,

Mira solo tienes que hacer un Formuario con pocos campos, el campo principal donde metes el numero de socio, que al introducirlo abra la base de datos o alias de clientes, lo busque y te devuelva los valores de nombres, etc...lo que quieras.

Un campo para la fecha en formato como quieras.

Otro campo de monto, donde colocaras el monto a introducir y por ultimo un campo ComboBox donde colocaras los nombres de los meses directamente si quieres o bien obtenerlos de un Alias o BASE de datos que contenga esos nombres.

Asi, introduces el numsocio y te busca el nombre. Introduces la fecha, luego el monto y por ultimo escoges el mes que se esta pagando o aportando.

En el evento Aceptar.click alli pones solamente un append blank y reemplazas los campos en la tabla con los datos del formulario.

Si usas el control.source con letras iniciales "m", ejemplo, m.numsocio no tienes ni que hacer un replace...solo pones Gather memvar y listo...los datos del form pasan a la TABLA.

Alli esta la ventaja de usar los control source (propiedades de los campos) y cuyos nombres comienzen con una "eme y un punto" para decirle que sean reemplazados con el correspondiente en la tabla..."m es por memoria".

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