注册 登录
编程论坛 VFP论坛

我是初学者,高手帮忙看看,提示操作符操作数类型不符。其中红色语句我还不太懂有什么作用

hszxgb 发布于 2020-10-07 21:23, 1677 次点击
thisform.text1.SetFocus
w=thisform.text1.Value
IF thisform.text3.Value="11"
   IF w<=50 then
      x=0.5*50
   ELSE
      x=0.5*50+0.3*(thisform.text1.Value-50)
   ENDIF
   thisform.text4.Value=x
   thisform.text3.Value=DATE()
ELSE
   MESSAGEBOX("请输入操作员代码:",1+48+256,"运行提示")
    .F.
ENDIF

[此贴子已经被作者于2020-10-7 21:25编辑过]

4 回复
#2
hszxgb2020-10-07 21:26
回复 楼主 hszxgb
这些红色语句提示设置焦点,不知道有什么作用
#3
井绳2020-10-08 14:43
第一句:thisform.text1.SetFocus,缺少()
最后一句:禁用,使之显示灰色

这段代码出现“操作符操作数类型不符”,问题出在
    IF thisform.text3.Value="11" 把其值认为是字符型
        而
    thisform.text3.Value=DATE()却让它等于日期型

将二者数据类型改为一致的可以消除错误题示。

[此贴子已经被作者于2020-10-8 14:45编辑过]

#4
mywisdom882020-10-09 12:32
以下是引用hszxgb在2020-10-7 21:23:03的发言:
thisform.text1.SetFocus
w=thisform.text1.Value
IF thisform.text3.Value="11"
   IF w<=50 then
      x=0.5*50
   ELSE
      x=0.5*50+0.3*(thisform.text1.Value-50)
   ENDIF
   thisform.text4.Value=x
   thisform.text3.Value=DATE()
ELSE
   MESSAGEBOX("请输入操作员代码:",1+48+256,"运行提示")
    .F.
ENDIF

主要错误在于thisform.text1.Value
由于Text1没有初始化为数值导致;只要在text1.Init上写 this.value = 0.00就可以,
至于其他的
if thisform.text3.Value="11" && 字符
   thisform.text3.Value=DATE() &&日期
等等,不是导致错误的原因,其实,语句是可以运行的,只是一般不要求这样做
#5
mywisdom882020-10-09 12:41
运行楼主的程序的步骤顺序
* 1
thisform.text1.SetFocus && Text1控件得到焦点(光标)
* 2
w=thisform.text1.Value && 赋值w
* 3
IF thisform.text3.Value="11" && 如果Text3的值是字符 11 ,执行计算,否则,就提示输入操作码,
   IF w<=50 then && 程序错误在这里,由于Text1没有初始化为数值,空置,就默认是字符空格了,也就是字符,就算现在输入数字,也是字符形式的数字,所以 if w<=50就报错误
      x=0.5*50
   ELSE
      x=0.5*50+0.3*(thisform.text1.Value-50)
   ENDIF
   thisform.text4.Value=x
   thisform.text3.Value=DATE()
ELSE
   MESSAGEBOX("请输入操作员代码:",1+48+256,"运行提示")
    .F.
ENDIF

** 解决办法
*在 form1.init 上写
thisform.text1.value = 0.00

*或者在thisform.text1.init 上写
this.value = 0.00



[此贴子已经被作者于2020-10-9 12:46编辑过]

1