输卵管造影当月怀孕:解决VFP中表格控件Grid的数据源刷新问题1

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 00:19:40

VFP的表格控件Grid是一个很好的显示查询、编辑数据的控件,但是在使用中会遇到以下问题: 

     1、使用select-SQL语句、临时表或表别名作为Grid的Recordsource属性时,在select 条件、临时表或表别名发生变化时,Grid控件往往不能显示出数据,或者原有的Grid属性包括列及列标头属性全部丢失,恢复成Grid默认的属性。 

     2、使用Pack命令彻底删除表中某些记录时,其结果往往是Grid一片空白,什么都显示不出来。 

     很多人对此感到疑惑。也有人想出把Grid先保存成类的办法来解决这类问题,都比较麻烦,其实有个很简单的方法可以解决一系列有关Grid的数据源刷新问题: 

    在改变Grid或执行Pack命令前,先将,再执行相应的select-SQL语句、改变表别名或Pack命令,例如:

1 、thisform.grid1.recordsource=Null
      pack
      thisform.grid1.recordsource='tablename'         &&恢复原表别名(使用原数据源,这里必须用别名,默认是表的主文件名,不能是表的完整名称)
2 、thisform.grid1.recordsource=Null
      thisform.grid1.recordsource='newtablename'     &&改变了别名(改变数据源)
3 、 thisform.grid1.recordsource=Null
      thisform.grid1.recordsource='select column1,
      column2 from tablename where column1=thisform.
      text1.value into cursor Temptable'
      thisform.grid1.recordsource='Temptable'            &&使用select查询临时表数据源

---- 这样Grid不但能正确显示变化后的数据,而且其属性不会丢失。
      体会:当作为Grid控件数据源的表被关闭、修改或改名时,就会发生Grid属性丢失或显示一片空白(无表格)的现象,解决办法是在修改Grid数据源或改变数据源之前将Grid的recordsource属性置成Null(或''),然后再修改数据源,修改完后,需要重新设置Grid的数据源,另外可以使用lockscreen=.T.属性先将表单锁定,等修改完成后,再用lockscreen=.F.刷新数据源的改动,这样可以避免在修改或更新数据源时Grid内只有表格没有内容。例如:

Thisform.LockScreen=.T.

Thisform.grid1.RecordSource=""

Creat Sql View st As Select * From 数据库名!表名 Where 字段名=Y

Thisform.grid1.RecordSource="st"

Thisform.Refresh

Thisform.LockScreen=.F.