求助!数据录入控制方法!

halyj 2007-01-08 06:10:53
我有一个表,表叫AAA.DBF,表中有如下字段及记录,请看:

abds bse aew esd erw add ghj puuu iuy ki sda hgf hiuy iuyy
1563 1 2 1 1 1 1 1 2 1 152 1 1 268
2123 4 1 2 2 2 1 1 2 2 52 2 1 1168

1.在数据录入时,如果在录入ki字段时,如果录ki为3,刚sda,hgf,hiuy,这几个字段就要控制不能录入,光标直接回iuyy上录入,还有或者回录入键上进行下条记录录入

2.控制每个字段的录入值范围在数据库里面有条件控制,但在表单里如何设计控制及提示错误并重新录入该字段!比如:abds<3000 and abds>1000 iuy<>0
...全文
247 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2007-01-09
  • 打赏
  • 举报
回复
this.sda.enabled

改成Thisform.Grid1.Column3.readonly=.t.

假设SDA对应的是Grid的第3列
halyj 2007-01-09
  • 打赏
  • 举报
回复
我在ki输入的TEXT中的interativechang中加入条件
if this.value=3
this.sda.enabled=.f.
:
endif
输入时提示:不能识别的成员sda
是什么原因?
十豆三 2007-01-09
  • 打赏
  • 举报
回复
先在文本框中输入,并判断后,再写入到表中,并刷新Grid即可。


以下是一个简单的例子,请参考使用:

设表名为:BOTO1
设表字段:NAME,SEX,AGE 均为字符型,长度10。
建立一个表单:DEMO.SCX
表单上有:
四个按钮:添加、保存、删除、退出
三个文本框:TEXT1、TEXT2、TEXT3
一个Grid表:

表单的Load事件:
USE boto1

表单的Init事件:
THIS.GRID1.RECORDSOURCE='BOTO1'
THIS.GRID1.DELETEMARK=.F.
THIS.GRID1.READONLY=.T.
FOR I=1 TO 3
J=ALLTRIM(STR(I))
THIS.TEXT&J..ENABLED=.F.
ENDFOR
This.Text1.Value=ALLTRIM(name)
This.Text2.Value=ALLTRIM(sex)
This.Text3.Value=ALLTRIM(age)

表单的Unload事件:
USE IN BOTO1

Grid的AfterRowColChange事件:
LPARAMETERS nColIndex
ThisForm.Text1.Value=ALLTRIM(name)
ThisForm.Text2.Value=ALLTRIM(sex)
ThisForm.Text3.Value=ALLTRIM(age)

添加按钮的Click事件:
IF MESSAGEBOX('是否使用录前值?',4+32+256,'信息提示')=7
ThisForm.text1.value=''
ThisForm.text2.value=''
ThisForm.text3.value=''
ENDIF
ThisForm.text1.Enabled= .T.
ThisForm.text2.Enabled= .T.
ThisForm.text3.Enabled= .T.
ThisForm.Text1.SetFocus

保存按钮的Click事件:
APPEND BLANK
replace name WITH ALLTRIM(thisform.text1.value)
replace sex WITH ALLTRIM(thisform.text2.value)
replace age WITH ALLTRIM(thisform.text3.value)
ThisForm.text1.Enabled= .f.
ThisForm.text2.Enabled= .f.
ThisForm.text3.Enabled= .f.
Thisform.grid1.Refresh

删除按钮的Click事件:
IF MESSAGEBOX('是否删除此条记录?',4+32+256,'信息提示')=7 OR RECCOUNT('BOTO1')=0
RETURN
ENDIF
SELECT BOTO1
DELETE
THISFORM.GRID1.RECORDSOURCE=NULL
PACK
THISFORM.GRID1.RECORDSOURCE='BOTO1'
GO TOP
THISFORM.GRID1.REFRESH

退出按钮的Click事件:
Thisform.Release
十豆三 2007-01-09
  • 打赏
  • 举报
回复
不在Grid表中直接输入就可以避免以上你的2个问题。
honglingwu 2007-01-09
  • 打赏
  • 举报
回复
在输入的text中的interativechang中加入条件就可以了.
如 if this.value=3
this.sda.enabled=.f.
:
endif
第二个也一样适当的加入就可以实现
halyj 2007-01-09
  • 打赏
  • 举报
回复
第二个问题还没回答哈,麻烦十豆三下,在表单里如何设定控制及提示错误并重新录入该字段!总之只有录在控制范围内才能接着录入下需字段
比如:abds<3000 and abds>1000
要求只有录入3000-1000内才能录入下个字段,否则就在abds上重复录入

另我在数据库里面把控制条件设了下,但出现错误后点确定就录入下个字段了,所以才要求能在表单里的interativechang中加入条件,条件一般错误如下
if this.value 条件
=messagebox("应该选择1-4",48,"信息提示")
RETURN
endif

看怎么样把上面我要求问题解决下哈

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧