用ADO的RECORDSET中的OPEN方法打开时没有错误,但用COMMAND对象查询时死机.哪位大大能看看是什么原因?
Dim conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Option ExplicitPrivate Sub Command1_Click()
Dim connstr$, sql$
connstr = "provider=microsoft.jet.oledb.4.0;data source=d:\cangku\cangku.mdb"
conn.Open connstrSet cmd.ActiveConnection = conn
sql = "select * from kucun where 物资名称='111'"
cmd.CommandText = sql
cmd.CommandType = adCmdText
Set rs = cmd.ExecuteCall chushi
Call listEnd SubPrivate Sub chushi()
With MSHFlexGrid1
    .Cols = 7
    .TextMatrix(0, 0) = "序号"
    .TextMatrix(0, 1) = "物资名称"
    .TextMatrix(0, 2) = "型号规格"
    .TextMatrix(0, 3) = "单位"
    .TextMatrix(0, 4) = "数量"
    .TextMatrix(0, 5) = "入库时间"
    .TextMatrix(0, 6) = "供货单位"
End With
End Sub
Private Sub list()
MSHFlexGrid1.Cols = 7
While rs.EOF = False
    rs.MoveFirst
    Dim r As Long
    Dim c As Integer
    For r = 1 To rs.RecordCount
        For c = 0 To rs.Fields.Count - 1
            MSHFlexGrid1.TextMatrix(r, c) = rs.Fields(c)
        Next c
        MSHFlexGrid1.Rows = MSHFlexGrid1.Rows + 1
        rs.MoveNext
    Next r
Wend
End Sub

解决方案 »

  1.   

    是不是你的数据库数据很多啊,
    一般数据多的话,会处理很久的
    几百条数据都觉得很慢了....建议改语句,用其他办法实现,尽量不要用MOVE.NEXT之类的
      

  2.   

    Private Sub list()
    MSHFlexGrid1.Cols = 7
    While rs.EOF = False
        rs.MoveFirst
        Dim r As Long
        Dim c As Integer
        For r = 1 To rs.RecordCount
            For c = 0 To rs.Fields.Count - 1
                MSHFlexGrid1.TextMatrix(r, c) = rs.Fields(c)
            Next c
            MSHFlexGrid1.Rows = MSHFlexGrid1.Rows + 1
            rs.MoveNext
        Next r
    Wend
    End Sub你读一读这一段代码
    好不容易rs.MoveNext读到最后去了,你又rs.MoveFirst了
      

  3.   

    While rs.EOF = False改成
    if not rs.eof then
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html