CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

关于释放控制权的问题

楼主forjie(我爱我家)2002-11-20 11:16:26 在 VB / 基础类 提问

请问,如何在adodb.connection执行一条需长时间运算的SQL语句时,使窗口仍然可以被拖动。 问题点数:50、回复次数:17Top

1 楼superguang(阳光的光)回复于 2002-11-20 12:23:50 得分 5

DoEvents  
  Top

2 楼forjie(我爱我家)回复于 2002-11-20 13:54:37 得分 0

好像不好使吧。Top

3 楼forjie(我爱我家)回复于 2002-11-20 13:56:08 得分 0

还有,我的程序太多,没法改成新开一个线程执行。Top

4 楼superguang(阳光的光)回复于 2002-11-20 14:30:32 得分 0

VB不支持多线程的啊  
   
  关注Top

5 楼cd_dragon(栋栋)回复于 2002-11-20 14:30:55 得分 5

帮你顶一下,解决了也告俺一声Top

6 楼litsnake1(litsnake)回复于 2002-11-20 15:18:53 得分 0

试试异步执行sql语句Top

7 楼cd_dragon(栋栋)回复于 2002-11-20 15:40:50 得分 0

我是过建立线程可以实现,但是很危险,而且你也不喜欢Top

8 楼forjie(我爱我家)回复于 2002-11-20 16:38:19 得分 0

to:   litsnake1  
          怎样设置异步执行SQL语句?Top

9 楼forjie(我爱我家)回复于 2002-11-20 16:39:49 得分 0

to:   cd_dragon(栋栋)  
          用vb做多线程确实很危险,特别是和数据库打交道,所以在有其他解决方案的前提下,不想采用多线程。Top

10 楼forjie(我爱我家)回复于 2002-11-20 16:41:06 得分 0

to   :   superguang(阳光的光)  
          vb通过调用API函数可以实现多线程,但是很危险。Top

11 楼superguang(阳光的光)回复于 2002-11-20 16:48:26 得分 0

就是啊   VB本身是不支持多线程的啊   要是用C就方便多了  
   
  关注Top

12 楼guofu007(蝈蝈)回复于 2002-11-20 16:59:09 得分 0

DoEvents,就放在程序的上面一行,Top

13 楼forjie(我爱我家)回复于 2002-11-20 17:14:00 得分 0

To:   guofu007(蝈蝈)  
          您的方法我已经试过了,不好使,不信你可以试一试,建一个存储过程往数据表内插1千万条纪录,然后用vb调这个存储过程(execute前加doevents),肯定还和死机一样。Top

14 楼forjie(我爱我家)回复于 2002-11-20 19:15:56 得分 0

是知道呀?重赏。Top

15 楼MarGo(潇洒)回复于 2002-11-21 19:19:49 得分 10

这样一段代码|||||:  
  dim   i   as   long  
  dim   sum   as   long      
  for   i=1   to   10000  
              sum=sum+i  
             
              doevents  
              IF   FLAG   THEN  
                  EXIT   FOR  
              END   IF  
    next   i    
  在FORM   的KEYPRESS事件中  
  判断按键是否为vbescape键  
  是设置FLAG=TRUE  
  这段程序是针对长时间执行操作而通过取消键退出操作  
  如果不可以  
  异步执行SQL语句,需要设置一些属性吧,  
  通常是两种|||||:  
    阻塞式和非阻塞式  
  阻塞式既执行完该条SQL语句后在执行其他程序  
  非阻塞式正好相反  
  可惜我曾经看过,有忘记了,抱歉  
  Top

16 楼junwhj(http://www.grid2000.com/cn)回复于 2002-11-21 20:48:58 得分 30

'1.   方法是异步执行该SQL语句;  
  '2.   MSDN中异步执行的参数是错误的(adExecuteAsync,实际应为adAsyncExecute);  
  '3.   存储过程执行完成后,触发ExecuteCommplete事件,在此事件中断开连接。  
   
  Option   Explicit  
   
  Private   WithEvents   mConnection   As   ADODB.Connection  
   
  Private   Sub   Command1_Click()  
          Set   mConnection   =   New   ADODB.Connection  
          mConnection.Provider   =   "SQLOLEDB"  
          mConnection.CommandTimeout   =   0  
          mConnection.Open   "Driver={SQL   Server};Server=Develop;UID=SA;PWD=;Database=Test;"  
          MsgBox   "Connected.",   vbExclamation  
          mConnection.Execute   "myproc",   ,   adAsyncExecute     '异步执行存储过程  
  End   Sub  
   
  Private   Sub   mConnection_ExecuteComplete(ByVal   RecordsAffected   As   Long,   ByVal   pError   As   ADODB.Error,   adStatus   As   ADODB.EventStatusEnum,   ByVal   pCommand   As   ADODB.Command,   ByVal   pRecordset   As   ADODB.Recordset,   ByVal   pConnection   As   ADODB.Connection)  
          mConnection.Close  
          Set   mConnection   =   Nothing  
          MsgBox   "OK"  
  End   Sub  
  Top

17 楼forjie(我爱我家)回复于 2002-11-25 15:29:57 得分 0

to:   junwhj(junwhj.myrice.com)    
          Thanks   so   much.  
           
  Top

相关问题

  • 如何释放控制权?函数是什么了?如何应用此函数呢?
  • 移交控制权用DoEvents?
  • 如何得到控制权
  • *******我有一段有"大循环"的程序,为不影响其他的操作应释放控制权,但不知应把DOEVENTS加在哪!请大家帮个忙!谢谢
  • 将控制权交还给系统
  • <<<<<<<<<如何获得Vxd的控制权>>>>>>>>>>>>
  • 视图中怎样控制权限
  • 如何获得系统控制权!说说你的想法!
  • 如何获得远程计算机的控制权限?
  • 如何探测console(dos)程序是否有 界面/控制权 ?

关键词

  • 执行
  • 语句
  • 存储过程
  • 多线程
  • vb
  • sql
  • mconnection
  • 异步执行
  • adodb
  • 危险

得分解答快速导航

  • 帖主:forjie
  • superguang
  • cd_dragon
  • MarGo
  • junwhj

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo