Problema con Variables en formulario de VPF

Buenas, a quien pueda ayudarme en VFP, sucede que tengo un Formulario conformado por 3 textbox[(año(4 Caract.), regist(5 Caract.), condición(1 caract. )], 1 commandbutton[Procesar] y optiongroup.
Con la finalidad de reemplazar el valor 'R' por 'Q' del campo "ESTADO" de la tabla1, presiono [Procesar], pero muestra el mensaje "Variable 'G' is not found."
No sé que estoy haciendo mal, o es que no soporta más de 2 variables en & del formulario.
Procedimiento click del commandbutton
A=ALLTRIM(THISFORM.TEXT1.VALUE) ----> dato ing. Que existe en tabla1 y campo= '2010'
B=ALLTRIM(THISFORM.TEXT2.VALUE) --->dato ing. Que existe en tabla1 y campo= '53695'
C=ALLTRIM(THISFORM.TEXT3.VALUE)  ---->dato  ing. Que existe en tabla1 y campo= 'G'
DO CASE
    case thisform.optiongroup1.value=1
    USE TABLA1
          REPLACE ALL ESTADO WITH 'Q' FOR VAL(AÑO)=&A  AND REGIST=&B AND ;
          CONDICION=&C  AND (ESTADO='R' OR ESTADO='S' )
 ENDCASE
EN LOAD DEL FORMULARIO
SET ENGINEBEHAVIOR 70
SET DEFAULT TO C:\data\
SET EXCLUSIVE OFF
Gracias por la ayuda que puedan brindarme

2 respuestas

Respuesta
1
Primer intento por resolver el problema:
No uses el & (macrosustitución) en el comando replace:
replace all estado with 'q' for val(año)=a  and regist=b and ;
condicion=c  and (estado='r' or estado='s' )
Primer intento falló
Hice la prueba pero sigue con error, el mensaje es "Operator/operand type mismatch"
Gracias por la ayuda que puedas brindarme,
Es un avance pues el mensaje de error cambió.
Segundo Intento, pero va con pregunta: ¿Dónde exactamente te marca el error de "mismatch"?
Al presionar el commandbutton[Procesar]
Eso ya lo sabemos.
¿A lo que me refiero es en qué parte del código que expones te marca el error el compilador?
Al empezar:
Replace all estado with ....
¿Qué tipo de datos y longitud tienen los campos, ESTADO, REGIST y CONDICIÓN de tabla1?
Los campos son de tipo carácter
¿Y el campo año de tabla1?
tambien tipo caracter
Eh ahí el problema. Estás comparando un carácter contra un valor numérico:
VAL(AÑO)=&A
Hice la corrección pero igual sigue con el mismo mensaje de error "Operator/operand type mismatch"
Muéstrame cómo quedó tu código.
El mensaje de error aparece al inicio de :
Replace all estado with ....
Cuando uso & (macrosustitución) el mensaje es "Variable 'G' is not found."
Cuando No uso & (macrosustitución) el mensaje es "Operator/operand type mismatch"

Procedimiento Click Del Commandbutton
a=alltrim(thisform.text1.value) 
b=alltrim(thisform.text2.value)
c=alltrim(thisform.text3.value) 
do case
    case thisform.optiongroup1.value=1
    use tabla1
          replace all estado with 'q' for año=a  and regist=b and ;
          condicion=c  and (estado='r' or estado='s' )
 endcase
En Load Del Formulario
set enginebehavior 70
set default to c:\data\
set exclusive off
Tercer intento:
Inicializa los textbox con un valor de cadena vacía en el init del formulario:
thisform.text1.value=" "
thisform.text2.value=" "
thisform.text3.value=" "
Respuesta
1
La verdad es que tu código no tiene ningún error, pero estas seguro que te dice que no encuentra la variable G ya que no tienes ninguna variable g y nunca has usado alguna variable G, posiblemente no la tengas en el formulario o en alguno de los botones, ya que posiblemente es en otro lado, en este botón no hay problema, eso es casi seguro o al menos casi seguro que no es por la variable G, córrelo nuevamente y cuando te salga el error dale debbug en el mensaje que te sale y te va a sacar el código, donde esta el error

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas