回 帖 发 新 帖 刷新版面

主题:请教,我的"保存"按钮一按,一直显示"学号重复"

*保存
getid=alltrim(thisform.txtid.VALUE)
getzkZh=alltrim(thisform.txtzkzh.VALUE)
getNAME=alltrim(thisform.txtname.VALUE)
GETSFZHM=ALLTRIM(THISFORM.TXTsfzhm.VALUE)
GETXB=ALLTRIM(THISFORM.OPTIONGROUP1.VALUE)
GETCSNY=THISFORM.TXTcsny.VALUE
GETMC=ALLTRIM(THISFORM.TXTnation.VALUE)
GETBYXX=ALLTRIM(THISFORM.TXTbyxx.VALUE)
GETRXCJ=THISFORM.TXTrxcj.VALUE
GETYDLX=ALLTRIM(THISFORM.COMBO1.VALUE)
GETJDXX=ALLTRIM(THISFORM.TXTjdxx.VALUE)
GETBZ=ALLTRIM(THISFORM.EDTbz.VALUE)




use student exclusive
IF EMPT(GETID)                
MESSAGEBOX("学号名不能为空",48,"错误")
pack
thisform.txtid.setfocus()
return
else
set order to id
SEEK getID
IF !FOUND()
tableupdate(.t.)
messagebox("添加完毕",48,"操作成功")
else
messagebox("学号重复",48,"错误")
thisform.txtid.setfocus()
return 
ENDIF
endif

            Thisform.txtid.enabled=.f.
            Thisform.txtzkzh.enabled=.f.
            Thisform.txtname.enabled=.f.
            Thisform.txtsfzhm.enabled=.f.
            Thisform.txtcsny.enabled=.f.
            Thisform.txtnation.enabled=.f.
            Thisform.txtbyxx.enabled=.f.
            Thisform.txtrxcj.enabled=.f.
            thisform.txtjdxx.enabled=.f.
            Thisform.EDTbz.enabled=.f.
            Thisform.combo1.enabled=.f.
            Thisform.optiongroup1.enabled=.f.
            thisform.TXTid.SETFOCUS

thisform.command1.enabled=.t.
thisform.command2.enabled=.t.
thisform.command4.enabled=.t.
thisform.command5.enabled=.t.
thisform.command3.enabled=.f.


这是源代码,我的"保存"按钮一按,一直显示"学号重复",但是数据能保存上,而且能重复保存.

回复列表 (共5个回复)

沙发

不知道你是添加纪录还是修改纪录!
你必须在添加空纪录前,检查一下,是否数据表中,已存在空纪录!



板凳

use student exclusive
IF EMPT(GETID)                
MESSAGEBOX("学号名不能为空",48,"错误")
GO BOTTOM
DELETE All for empt(GETID)
pack
thisform.txtid.setfocus()
return
else
……

3 楼


是添加记录,是保存按钮

4 楼


你好,你的问题解决了吗,我也是同样的问题,如果解决了,可以告诉我一下,怎么办到的好吗?先谢谢了。

5 楼

问题出在你的txtid文本框绑定到学号(ID)字段,之所以总是出现学号重复,原因如下:
由于数据源已经绑定,你“增加”或“修改”记录时,你的txtid文本框中输入的学号(ID)其实已经存在于 student 数据表中了,此时当然用,locate seek等命令在student数据表中查找thisform.txtid.Value肯定能找到,并且能重复保存。


解决办法:txtid文本框不绑定到数据源字段ID,并将判断是否重复的代码改为以下试试:

......
local array aCount(1)
select count(*) from student  where allt(ID)==getid into array aCount

IF !aCount(1)>0
    insert into student(字段1,字段2...) values (getid,getzkZh....)
    messagebox("添加完毕",48,"操作成功")
ELSE
    messagebox("学号重复",48,"错误")
    thisform.txtid.setfocus()
    return 
ENDIF
......

没有使用Locate或Seek配合Found()判断重复记录,是为了避免记录指针移动。

我来回复

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