Dim rsSOrder As New ADODB.Recordset
    Dim rsTmp As New ADODB.Recordset
    Dim strSQL As String
    
    strSQL = "SELECT SOrderID FROM SOrderHead WHERE State='2' AND SOrderID LIKE 'S%'      ORDER BY SOrderID"
    rsSOrder.Open strSQL, cnWarehouse, adOpenKeyset, adLockReadOnly
      
    lstSOrder.Clear
    Do While Not rsSOrder.EOF
        strSQL = "SELECT Count(*) FROM SOrderItem WHERE SOrderID='" & rsSOrder.Fields(0).Value & "' AND Quantity>Planed"
        rsTmp.Open strSQL, cnWarehouse, adOpenKeyset, adLockReadOnly
        If rsTmp.Fields(0) > 0 Then lstSOrder.AddItem rsSOrder.Fields(0).Value
        rsTmp.Close
        rsSOrder.MoveNext
    Loop

解决方案 »

  1.   

    语句没有什么问题,你把  sorderid  加上索引就好了!
      

  2.   

    select b.SOrderID,count(b.SOrderID) from SOrderHead a,SOrderItem b
    where a.SOrderID=b.SOrderID 
    group by b.SOrderID
      

  3.   

    我数据库是SQL的放在局域网内用,
    楼上所说把sorderid 加上索引,怎么做呀^_^
      

  4.   

    主要的目的是为了加快速度
    那主要原因是不是 
        Do While Not rsSOrder.EOF
        .......
        Loop
    这个循环引起的
      

  5.   

    谢谢大家,我自己解决了
    不要用COUNT