您的位置:程序门 -> vb -> 数据库(包含打印,安装,报表)



如何解决由于sql查询时间长导致程序假死状态的问题


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


如何解决由于sql查询时间长导致程序假死状态的问题
发表于:2007-08-08 10:07:56 楼主
由于是基于上千万级别的查询,每次查询可能要花5、6分钟以上,

此时vb程序几乎死机状态,用户也没法知道进度情况,

请问有没有什么办法避免这种情况,甚至有没有可能使用进度条?

谢谢
发表于:2007-08-08 10:51:221楼 得分:0
貌似要用多线程哈...听听楼下的建议
发表于:2007-08-08 11:30:492楼 得分:0
想象不出这样的查询有什么实际意义
如果的确需要,或者你要看看能不能有更合理的数据库设计结构
如果一切都不能改变,也只有如楼上所说的做了......
发表于:2007-08-08 11:31:353楼 得分:0
能分步不?不能分步就只能多线程了...听说vb不支持线程
发表于:2007-08-08 11:45:054楼 得分:0
把查询语句贴出来啦。。。。估计你的数据库有问题
发表于:2007-08-08 21:48:325楼 得分:0
有同感。至少,我有7-8秒的查询,只有同时显示一个不是实际进度的滚动条。所以很想知道有没有好的解决方法,帮顶
发表于:2007-08-09 08:41:526楼 得分:0
有办法。
1   首先要引用   mdac   2.5   以上版本。使用   vb   6.0   以上平台。
2   声明变量如   dim   withevents   rs   as   adodb.recordset
3   必须使用客户游标。
4   打开记录集时必须指定   adasyncfetch  

dim   withevents   rs   as   adodb.recordset

set   rs   =   new   adodb.recordset
with   rs
          .cursorlocation   =   aduseclient
           
          .properties( "initial   fetch   size ")   =   2
          .properties( "background   fetch   size ")   =   4
          .open   strsql,   cn,   ,   ,   adasyncfetch
end   with

事件:(当然你可以使用进度条)
private   sub   rs_fetchprogress(byval   progress   as   long,   byval   maxprogress   as   long,   adstatus   as   adodb.eventstatusenum,   byval   precordset   as   adodb.recordset)
            debug.print   "fetch:   "   &   progress   &   _
                                    "     max:   "   &   maxprogress
end   sub

private   sub   rs_fetchcomplete(byval   perror   as   adodb.error,   adstatus   as   adodb.eventstatusenum,   byval   precordset   as   adodb.recordset)
            if   adstatus   <>   adstatusok   then
                  debug.print   "failed "
                  debug.print   "error:   "   &   perror.number   &   "   -   "   &   perror.description
            else
                  set   datagrid1.datasource   =   precordset
                  debug.print   "done "
            end   if
end   sub
发表于:2007-08-09 09:22:297楼 得分:0
楼上的方法学习了
有空测试一下
发表于:2007-08-10 14:13:108楼 得分:0
of123()   好
发表于:2007-08-10 15:03:419楼 得分:0
满天星的方法果然好啊~
发表于:2007-08-10 18:46:1510楼 得分:0
收藏一下,有空测试
发表于:2007-08-12 05:16:4511楼 得分:0
我晕,强烈建议csdn搞个引用功能~~郁闷


快速检索

最新资讯
热门点击