回 帖 发 新 帖 刷新版面

主题:求助经典问题:grid空白

遇到这样的问题:
    点击表单1中的“查询”,
    运行表单2,此中grid闪出结果后变成空白。(但是如果新建grid1,则多次查询也没有这个问题。关闭vfp再重新打开,重新运行出现此情况。。)

搜索了一下,发现这个问题是个经典问题。我的问题似乎比别人还简单一些,但是尝试了一些办法仍然无法解决。
    目前grid属性如下:grid1.recordsourcetype=1-别名
                      grid1.recordsource=table1
    含有grid的表单2的init事件如下:
                      select table1
                      thisform.grid1.recordsource=null
                      thisform.grid1.recordsource="table1"
                      set filter to &tj; &&tj为筛选条件,从table1中筛选,
                      and between(长度,val(alltrim(st)),val(alltrim(ed)))
                      thisform.refresh
                      thisform.grid1.refresh
   输入查询条件的表单1“查询”按钮如下:
                      select rabiesinfo
                      set filter to .t.

                      *筛选条件编写
                      public tj
                       tj=".t."
                   if not empty(alltrim(thisform.cmb条件1.value))
                   tj=tj+".and.条件1='"+alltrim(thisform.cmb条件1.value)+"'"
                   endif
      
                   if not empty(alltrim(thisform.cmb条件2.value))
                   tj=tj+".and. 条件2='"+alltrim(thisform.cmb条件2.value)+"'"
                   endif

                   do form form2
                   thisform.release
还望各位高手不吝赐教!

回复列表 (共9个回复)

沙发

去掉 thisform.grid1.recordsource=null  试试。

板凳


去掉了,不行,还是空白。
[em10]

3 楼

表单不刷新试一下

4 楼

试一下:

含有grid的表单2的init事件如下:
                      select table1
                      thisform.grid1.recordsource=""
                      set filter to &tj; &&tj为筛选条件,从table1中筛选,
                      and between(长度,val(alltrim(st)),val(alltrim(ed)))、
                      thisform.grid1.recordsource="table1"
                      thisform.grid1.refresh

5 楼

set filter to &tj; &&tj为筛选条件,从table1中筛选,
                      and between(长度,val(alltrim(st)),val(alltrim(ed)))



set filter 条件筛选不支持st,ed变量的,因为set filter 在Init()之外发生作用,此时st,ed已经不存在了。

6 楼

在load中生成源数据

7 楼

用程序重新汇制表格,如果没解决的法请联系(QQ:228129390)

8 楼

目前grid属性如下:grid1.recordsourcetype=1-别名
                      grid1.recordsource=table1  &&少了引号
    含有grid的表单2的init事件如下:
                      select table1
                      thisform.grid1.recordsource=null  &&注释掉
                      thisform.grid1.recordsource="table1"  &&注释掉
                      set filter to &tj; &&tj为筛选条件,从table1中筛选,
                      and between(长度,val(alltrim(st)),val(alltrim(ed)))
                      thisform.refresh
                      thisform.grid1.refresh

表单1就可以完成表单2的任务,为何非要建立个公共变量?

9 楼

目前grid属性如下:    不要        
    含有grid的表单2的init事件如下:
                      with  thisform.grid1
                         .recordsource="table1"
                         .refresh
                     endwith
   输入查询条件的表单1“查询”按钮如下:
                      select rabiesinfo
                      set filter to .t.

                      *筛选条件编写
                      public tj
                       tj=".t."
                   if not empty(alltrim(thisform.cmb条件1.value))
                   tj=tj+".and.条件1='"+alltrim(thisform.cmb条件1.value)+"'"
                   endif
      
                   if not empty(alltrim(thisform.cmb条件2.value))
                   tj=tj+".and. 条件2='"+alltrim(thisform.cmb条件2.value)+"'"
                   endif
                 *-表单2的代码
                  select table1
                  set filter to &tj; &&tj为筛选条件,从table1中筛选,
                      and between(长度,val(alltrim(st)),val(alltrim(ed)))
                 *-
                   do form form2
                   thisform.release

我来回复

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