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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

    这样一段代码|||||:
    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语句后在执行其他程序
    非阻塞式正好相反
    可惜我曾经看过,有忘记了,抱歉
      

  7.   

    '1. 方法是异步执行该SQL语句;
    '2. MSDN中异步执行的参数是错误的(adExecuteAsync,实际应为adAsyncExecute);
    '3. 存储过程执行完成后,触发ExecuteCommplete事件,在此事件中断开连接。Option ExplicitPrivate WithEvents mConnection As ADODB.ConnectionPrivate 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 SubPrivate 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
      

  8.   

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