主题:还是再问,菜菜的
ckjing
[专家分:10] 发布于 2009-08-11 18:14:00
当鼠标点击表格框时的相应记录时,怎么才能把相应记录显示在相应的文本框text上?
回复列表 (共11个回复)
沙发
qjbzjp [专家分:8830] 发布于 2009-08-11 19:11:00
1. 先将各文本框的数据源绑定到字段;
2. 在表格的AfterRowColChange事件中写入:
Thisform.Refresh
板凳
ckjing [专家分:10] 发布于 2009-08-11 23:34:00
public tt
locate for kjsj.期号=thisform.text2.value
tt=messagebox("确定要删除该记录吗?",4+32+256)
if tt=6 then
DELETE
USE kjsj EXCLUSIVE
PACK
thisform.refresh
endif
这是command4的语句,但执行后相应的表格框没有显示,请教。
3 楼
homayzh [专家分:7040] 发布于 2009-08-12 08:40:00
你这样!
locate for kjsj.期号=thisform.text2.value
if eof()
messagebox("没有找到记录")
endif
if messagebox("确定要删除该记录吗?",4+32+256) = 6
DELETE
USE kjsj EXCLUSIVE
PACK
thisform.refresh
endif
这是command4的语句,但执行后相应的表格框没有显示,请教。
你的程序在
locate for kjsj.期号=thisform.text2.value
时,就没有找到记录,你可以试试
locate for kjsj.期号=allt(thisform.text2.value)
4 楼
ckjing [专家分:10] 发布于 2009-08-12 08:55:00
locate 语句我已经改好了,就是执行pack后在相应的grid上没显示数据了,我想应该是用了
USE kjsj EXCLUSIVE 产生的,不知道怎么改。
5 楼
homayzh [专家分:7040] 发布于 2009-08-12 09:11:00
用你pack相应的grid没有数据,你重新设置一个它的数据源就好了
6 楼
qjbzjp [专家分:8830] 发布于 2009-08-12 09:50:00
public tt
locate for kjsj.期号=thisform.text2.value
if found()
tt=messagebox("确定要删除该记录吗?",4+32+256)
if tt=6 then
ThisForm.Grid1.RecordSource=null
DELETE
USE kjsj EXCLUSIVE
PACK
ThisForm.Grid1.RecordSource="ok" &&假设你的数据源是ok.dbf
thisform.refresh
endif
else
messagebox("找不到该记录!")
endif
7 楼
ckjing [专家分:10] 发布于 2009-08-12 11:42:00
ThisForm.Grid1.RecordSource="kjsj"
加上后是显示整个表,并不是显示我原来的表格的样式,我原来只有显示部分字段
8 楼
ckjing [专家分:10] 发布于 2009-08-12 16:03:00
上面的问题我把pake用在退出时执行,算解决了。
另,打开表单时表单上的表格框是显示的第一个记录开始,我想一打开显示的是后面的记录怎么做?
用select kjsj
goto bottom加在inti上怎么不行?
9 楼
sywzs [专家分:5650] 发布于 2009-08-13 06:18:00
一般情况下,不要在程序中频繁使用 PACK 命令,把 DELETED 开关设置成 ON 就行了,在退出程序时再使用 PACK 命令。
如果非要在程序中使用的话,每次使用 PACK 后,都要重新给 Grid1.RecordSource 赋值。
如果表已经打开,下面两句加在哪里都应该把表的指针指向最后一条记录的,除非表中无记录。
select kjsj
go bottom
10 楼
ckjing [专家分:10] 发布于 2009-08-13 12:04:00
select kjsj
go bottom
但是表格框还是从第一条记录开始显示,不能显示在最后的记录。
我来回复