您的位置:程序门 -> vb -> 基础类



100分.急!关于mshflexgrid中显示数据的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


100分.急!关于mshflexgrid中显示数据的问题[已结贴,结贴人:jifa168]
发表于:2007-03-19 09:16:15 楼主
在网上找到一个类似的问题.原帖如下
http://topic.csdn.net/t/20051116/11/4396875.html

前提,窗体启动,我用mshflegrid控件显示数据;可以一行一行的选中。      
    问题,我做查询的时候,第一次结果为空,紧接着进行第二次查询,比如查询结果为5条记录,这时,用鼠标单击某一行就选不中了;焦点老是跑到最前面的那行固定行上。      
    怎么能在第二次查询后,能够选中某一行。  

原帖提拱的办法
如果要避免出现这种问题,你可以用两个记录集对mshflexgrid赋值,先判断第一个记录集是否为空,如果不为空再打开第二个记录集赋给mshflexgrid      

想问各位高人.除了这个办法,还有没有其它的解决方案?
因为我这需要如果记录为空,你可以添加数据.
发表于:2007-03-19 09:58:561楼 得分:0
既然都说是bug了,那就换个控件吧楼主
发表于:2007-03-19 10:10:482楼 得分:5
调用前先clear一下然后初始化一下grid标题
with   me.mshflexgrid1
        .clear
        .textmatrix(0,   0)   =   "编号 "
        .textmatrix(0,   1)   =   "行为 "
        .colwidth(0)   =   500
        .colwidth(1)   =   2000
end   with


我用着是没有什么问题
发表于:2007-03-19 10:50:543楼 得分:0
谢谢楼上的俩位!
hongqi162(失踪的月亮)  
按你的方法好像还是有那种现象
发表于:2007-03-19 11:08:274楼 得分:15
用“绑定”的方法,会有很多限制和你意想不到的问题。
功能上只能实现很简单的任务。
而且也不是专业人员所为啊。

建议:
去掉绑定,用代码来进行控制:
1)连接数据库
2)取数据
3)关闭数据库连接
然后随意设置跳到哪一行。

注意:
跳转的时候要用:“if   xxx.rows   >   1   then   xxx.row   =   1”
发表于:2007-03-19 11:13:575楼 得分:0
楼上的方法不错
发表于:2007-03-19 11:39:526楼 得分:30
添加类似如下代码,适当修改,  
if   记录=null   then

'add   data
adodc1.add   "xx " "
adodc1.add   "yy "  
adodc1.updata
adodc1.refresh

'then   read   data   to   mshflexgrid1

这个你就会了```

用控件datagrid测试类似问题成功.
发表于:2007-03-19 11:45:107楼 得分:50
这个问题我也碰到过,我也觉得是mshflexgrid的bug
一般来说我是这么解决:
rs=查询
if   rs.eof   and   rs.bof ' ' ' '如果查询结果为空,就不要绑定
        mshflexgrid1.clear
        mshflexgrid1.rows=2
' ' '还可以写一些设置标题、对齐之类的语句
else
        set   mshflexgrid1.datasource=rs
endif

比如这样:
private   sub   command1_click()
        set   mshflexgrid1.datasource   =   nothing
        adodc1.recordsource   =   "select   *   from   c401   where   课程编号   like   ' "   &   text1   &   "% ' "
        adodc1.refresh
        if   adodc1.recordset.eof   and   adodc1.recordset.bof   then
                mshflexgrid1.clear
                mshflexgrid1.rows   =   2
                '这里需要添加一些修改mshflexgrid1外观的语句
        else
        set   mshflexgrid1.datasource   =   adodc1.recordset
        end   if
end   sub
无论使用adodc控件还是直接定义recordset对象都可以用这个方法
发表于:2007-03-19 12:57:478楼 得分:0
搬个板凳,坐下来学习
发表于:2007-03-19 18:13:429楼 得分:0
学到不少.
我的问题最终解决是没有通过数据绑定,直接通过代码往grid里面写数据.
这样的话就能避免那个问题


快速检索

最新资讯
热门点击