回 帖 发 新 帖 刷新版面

主题:请问这个删除记录的代码错在哪

a=val(thisform.text3.value)
if used('凭证管理')
 select 凭证管理
 else
 use 凭证管理
 endif
 locate for 年=thisform.text1.value and 月=thisform.text2.value and 凭证号=a
delete
pack

想删除符合条件的记录,但是删不了,系统也不报错。

回复列表 (共5个回复)

沙发

或许没有定位成功呢。如果加两句看一下再找原因会好一些
a=val(thisform.text3.value)
if used('凭证管理')
 select 凭证管理
 else
 use 凭证管理
 endif
 locate for 年=thisform.text1.value and 月=thisform.text2.value and 凭证号=a
if found()
delete
pack
else
?"没有找到记录"
endif

板凳

_tally = 0
dele from  凭证管理 where 年=thisform.text1.value and 月=thisform.text2.value and 凭证号=a

if _tally <= 0
   messageb("没有记录被删除!")
else
   messageb("共" + alltrim(str(_tally)) + "条记录被删除!")
endif

3 楼


谢谢!确实是没有找到记录,但是我不明白,为什么会找不到呢?明明直接查看表可以看到。

4 楼

关键是定位的条件是否符合,年,月,凭证号是否与你所看到的对应。从你的代码看,你的年,月是字符型,凭证号是数值型,数据表里的是这样吗? 另外,对于字符型字段,有时会出现一种情况,比如你的年是4位,而你的字段长度是5位,当你输入4位年份后,在第5位可能会有一个半双字节的看不见的字符,这样看到的和实际的值就不同了.在表单上的文本框里输入字符串时有时也会出现类似的情况.

5 楼

谢谢,我把文本框InputMask属性设置为999就可以了。

我来回复

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