回 帖 发 新 帖 刷新版面

主题:还是再问,菜菜的

当鼠标点击表格框时的相应记录时,怎么才能把相应记录显示在相应的文本框text上?

回复列表 (共11个回复)

沙发

1. 先将各文本框的数据源绑定到字段;
2. 在表格的AfterRowColChange事件中写入:
Thisform.Refresh

板凳

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 楼

你这样!
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 楼

locate 语句我已经改好了,就是执行pack后在相应的grid上没显示数据了,我想应该是用了 
 USE kjsj EXCLUSIVE 产生的,不知道怎么改。

5 楼

用你pack相应的grid没有数据,你重新设置一个它的数据源就好了

6 楼

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 楼

ThisForm.Grid1.RecordSource="kjsj"  
加上后是显示整个表,并不是显示我原来的表格的样式,我原来只有显示部分字段

8 楼

上面的问题我把pake用在退出时执行,算解决了。
另,打开表单时表单上的表格框是显示的第一个记录开始,我想一打开显示的是后面的记录怎么做?
用select kjsj
goto bottom加在inti上怎么不行?

9 楼

一般情况下,不要在程序中频繁使用 PACK 命令,把 DELETED 开关设置成 ON 就行了,在退出程序时再使用 PACK 命令。
如果非要在程序中使用的话,每次使用 PACK 后,都要重新给 Grid1.RecordSource 赋值。
如果表已经打开,下面两句加在哪里都应该把表的指针指向最后一条记录的,除非表中无记录。
   select kjsj
   go bottom 

10 楼

select kjsj
   go bottom 
但是表格框还是从第一条记录开始显示,不能显示在最后的记录。

我来回复

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