g_DBCon.Execute(sqls)执行一个查询 这个查询时间很长 大概一分钟左右 
在查询的过程中程序界面无响应
怎么才可以是程序可以继续其他工作
用DoEvents?
多线程?VB用多线程不行啊!
怎么办 大家帮帮我拉!给我点资料参考参考!谢谢!

解决方案 »

  1.   

    考虑你的SQL语句,比如是否没有建立合适的索引,或者你的查询联接太多等,Doevents在这种情况下是不起作用的
      

  2.   

    实际上,Execute 查询是丢给数据库引擎去执行的。如果没有特殊的设置(如要求返回记录集或影响的记录数),查询过程与 VB 后续语句是异步运行的。也就是说,当你把查询传给引擎后,如果没有要求记录集,也没有给 AffectedRecords 参数变量,后续语句就会继续执行。因此,如果你要做的是一个返回记录集的查询,可以将其改为不返回记录集,而是将查询结果写入一个新的临时表。你此时就可以做其他事情,过后再去查询临时表。如果你仅仅是为了解决界面无响应问题,则可以声明一个带事件的记录集变量,
    Dim WithEvents rs As ADODB.Recordset然后在
    Private Sub rs_FetchProgress(ByVal Progress As Long, ByVal MaxProgress As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)End Sub
    事件中显示你的查询进度。