以下是引用无心在2006-5-16 9:10:00的发言:
本人是VF菜鸟,自已写了一个登录的程序,但总不能实现,特来请哪位高手指教下,先谢谢了!
public sf,user_name,pwd
sf=thisform.optiongroup1.value
user_name=thisform.text1.value
pwd=thisform.text1.value
i=0
use 用户表
go top
do while .not.eof()
if 用户名=user_name .and. 密码=pwd .and. 身份=sf
thisform.release
else
i=i+1
if i>=3
=messagebox("3次输入错误!将自动关闭窗口!",48,"警告!")
thisform.release
else
thisform.text1.setfocus
=messagebox("用户名或密码或身份错误!",48,"错误!")
endif
endif
skip
enddo
实在不好意思,没有能很好地看看你的程序就给你支招。现看了你的程序,确实有些问题。
(1)在FORM1.INIT()将次数i设成全局变量
CLOSE ALL
IF FILE([用户表.DBF])
USE 用户表.DBF
ELSE
CREATE TABLE 用户表 (用户名 C(12),密码 C(12))
APPEND BLANK
REPLACE 用户名 WITH [SYSYTEM],密码 WITH [SYSTEM]
ENDIF
PUBLIC I
I=0
(2)在COMMAND1.CLICK()判断
LOCATE ALL FOR 用户名=THISFORM.TEXT1.VALUE .and. 密码=THISFORM.TEXT2.VALUE .and. 身份=THISFORM.optiongroup1.value
I=I+1
IF EOF()
IF I>3
=messagebox("3次输入错误!将自动关闭窗口!",48,"警告!")
thisform.release
QUIT
ELSE
thisform.text1.setfocus
=messagebox("用户名或密码或身份错误!",48,"错误!")
ENDIF
ELSE
THISFORM.RELEASE
DO MENU.MPR &&进入主控程序
ENDIF
(3)主要的错误,在于你每次判断所输入的用户名和密码是否正确的时候,没有用LOCATE命令,而是用IF命令。前者在整个表中找需要的信息,而后者只在当前记录进行判断。