回 帖 发 新 帖 刷新版面

主题:求助!操作符操作数类型不匹配。

这里有一个主程序和一个密码登陆界面。运行时总是提示“操作符操作数类型不匹配。”请好心人耐心帮我看一下。不胜感激!

主程序是这样的:
set talk off
clear all
* ly用于控制登录时是管理员还是来宾账户。ly=1表示管理员,0表示来宾。登录时,输入密码正确则qued=1.否则为0.qued返回来的值是1则继续执行下面代码为0退出系统。
public ly,qued  
do form 登陆界面
[u]if qued=1[/u](挂起时显示的错误位置)
  do form 主界面
  read events
endif

登陆界面里面:
表单初始化:
[b]form1的init:[/b]
public i
i=0
ly=1

[b]登录按钮click:[/b]
if ly=1
  i=i+1
  thisform.text1.setfocus
  use mm
    if thisform.text1.value=密码
      thisform.release
      release i
      use
      qued=1
    else
      if i<3
        messagebox("密码错,请重新输入!",0+32,"密码")
        thisform.text1.value=""
        thisform.text1.setfocus
      else
         messagebox("密码错,禁止进入系统",0+16,"密码")
         thisform.release
         release i
         qued=0
      endif
    endif
else
  if ly=0
     thisform.release
     qued=1
  endif
endif

[b]组合框init:[/b]
this.value="系统管理员"

[b]interactive:[/b]
if "Guest"=allt(this.value)
  use zhug1
  if 账户状态=0
    messagebox("此账户已禁用,请与管理员联系。",0+16,"错误信息")
    this.value="系统管理员"
    ly=1
    thisform.text1.setfocus
    thisform.text1.visible=.t.
    thisform.label1.visible=.f.
  else
    ly=0
    thisform.text1.visible=.f.
    thisform.label1.visible=.f.
    thisform.commandgroup1.command1.visible=.t.
    thisform.commandgroup1.command1.setfocus
  endif
  use
else
  ly=1
  thisform.label1.visible=.t.
  thisform.commandgroup1.command1.visible=.t.
  thisform.commandgroup2.command2.visible=.t.
  thisform.text1.visible=.t.
  thisform.text1.setfocus
endif
  

当我挂起的时候。它问题出现在qued=1。可是提示错误时我登陆表单才出来,还没来得及输密码,也就是说qued的值还没有返回。它就提前报错了。这应该怎么办??

回复列表 (共11个回复)

11 楼

public ly,qued  
do form 登陆界面
if qued=1(挂起时显示的错误位置)
  do form 主界面
  read events
endif

你的“登陆界面”表单是模式表单吗,如果不是改成模式表单吧!这样就不会出现错误,原因是,程序运行到“do form 登陆界面”后,不会暂停的,将继续运行下面的代码,但这时变量qued 只是被定义了全局变量,值还是逻辑型,其值为.F.,所以会在“if qued=1”出现错误,操作符操作数类型不匹配。
如果你不想改成模式表单,那么就把“do form 主界面
”放在“登陆界面”表单中去运行,且是在当用户输入正确的用户和密码后。

我来回复

您尚未登录,请登录后再回复。点此登录或注册