一个奇怪的问题

xilaianzxsc 2017-09-28 09:29:46
VFP 9 +SQL 2000


一、表单上,command.click 命令如下:

DO server
SQLEXEC(nhandle,"select * from kaoqingbiao","Kqlrtemp")
thisform.grid1.RecordSource="Kqlrtemp"
thisform.grid1.RowHeight=24
thisform.grid1.refresh()

二、表单的grid1.column1.text.valid命令如下
MESSAGEBOX(0)

三、现象:
运行表单,第一次点击command,再点击grid1.column1时,则messagebox正常响应
如果再点一下command,然后再点grid1.column1,则messagebox不响应

即: 多次点command1 , 则grid1.column1就自动无效。


想了很久,还是想不出来是什么原因。
如何解决这个问题?(即:不管如何击command1,都要保证grid1.column1能活着)
请老师指教。
...全文
368 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
都市夜猫 2017-09-28
  • 打赏
  • 举报
回复
正常,RecordSource 被关闭或重新绑定到另一个表,都会导致 grid 重构, 重构导致原来的列全部丢失,因此你写好的事件代码也一起消失了 执行 SQLEXEC 实际上是先关闭原来的临时表 Kqlrtemp,然后用查询回来的数据重建 Kqlrtemp 表 有一简单办法来欺骗 vfp 在绑定表被关闭前,先将 grid.RecordSource 改为 Null 或空字符串,这时 grid 没有绑定到有效的表,因此不会重构 一旦 sqlexec 执行完毕,生成了新的 Kqlrtemp,再将它赋值给 grid.RecordSource,由于 vfp 发现还是原来绑定的表,因此仍不会导致重构 DO server thisform.grid1.RecordSource="" && 加这一行 SQLEXEC(nhandle,"select * from kaoqingbiao","Kqlrtemp") thisform.grid1.RecordSource="Kqlrtemp" thisform.grid1.RowHeight=24 thisform.grid1.refresh()
xilaianzxsc 2017-09-28
  • 打赏
  • 举报
回复
谢谢老师的指导。 老师真是聪明!真是佩服!

2,722

社区成员

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

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