我想分成几段来读取。应该怎么解决。
我的代码,应该怎么修改。请大家帮忙。Public Function spare_model() As String '配件型号信息
    Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset
       cn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;" & _
   " Extended Properties='DSN=ascnew_2;SRVR=ascnew1214;DB=master;UID=dba;PWD=nokia&shangsi&asc'"
    cn.Open
    Rs.CursorLocation = adUseClient
    Rs.Open "SELECT T_SPARE_MODEL.c_spare_code,C_spare_name_local,c_spare_name_en,T_SPARE_MODEL.c_phone_model," & _
"c_level_no,c_spare_model,c_warranty FROM T_SPARE_MODEL left join t_spare_part on " & _
"t_spare_model.c_spare_code=t_spare_part.c_spare_code", cn, 3, 1
    Dim stra As String    
While Not Rs.EOF
stra = stra + Rs.Fields("c_spare_code") + "|" + Rs.Fields("C_spare_name_local") + "|" + _
              Rs.Fields("c_spare_name_en") + "|" + Rs.Fields("c_phone_model") + "|" + _
              Rs.Fields("c_level_no") + "|" + Rs.Fields("c_spare_model") + "|" + _
              Rs.Fields("c_warranty") + "|"
Rs.MoveNext
 WendForm1.Label3.Caption = Rs.Fields("c_spare_code").Count
 stra = stra & "spare_model" & "|" spare_model = stra
     Set Rs = Nothing
     Set cn = Nothing
End Function

解决方案 »

  1.   

    定义一个strb
    strb+=stra
    这样试试。
      

  2.   

    应该没有用,如果一次读取10000多数据,肯定会挂起。像你这样设置没有什么别的用,不过也谢谢您。
    我想过,应该分段来读取。
    我使用for循环
    for i=0 to 100
    stra = stra + Rs.Fields("c_spare_code") + "|" + Rs.Fields("C_spare_name_local") + "|" + _
                  Rs.Fields("c_spare_name_en") + "|" + Rs.Fields("c_phone_model") + "|" + _
                  Rs.Fields("c_level_no") + "|" + Rs.Fields("c_spare_model") + "|" + _
                  Rs.Fields("c_warranty") + "|"
    next
    这样只是读取第一条数据。
    应该怎样修改。
      

  3.   

    在循环中加
        DoEvents
      

  4.   

    难道是这样?!
    for i=0 to 100
    ....
    doevents
    next
    rs.fields.count 么。
    还有一个问题,那就是我怎么知道是结束的
    也就是现在情况下怎么知道数据信息总数。
      

  5.   


    While Not Rs.EOF
    stra = stra + Rs.Fields("c_spare_code") + "|" + Rs.Fields("C_spare_name_local") + "|" + _
                  Rs.Fields("c_spare_name_en") + "|" + Rs.Fields("c_phone_model") + "|" + _
                  Rs.Fields("c_level_no") + "|" + Rs.Fields("c_spare_model") + "|" + _
                  Rs.Fields("c_warranty") + "|"
    DoEvents
    Rs.MoveNext
    Wend
      

  6.   

    这样加doevents,好像就不读取了。
      

  7.   

    除了SELECT COUNT(*) FROM table_name方法以为,还有什么方法可以得到返回匹配指定条件的行数。
    如果大家知道还有别的方法,请告诉我。
      

  8.   

    尝试一下添加DoEvents,虽然不能加快查询,但可以避免VB挂起。
      

  9.   

    While Not Rs.EOF
    stra = stra + Rs.Fields("c_spare_code") + "|" + Rs.Fields("C_spare_name_local") + "|" + _
                  Rs.Fields("c_spare_name_en") + "|" + Rs.Fields("c_phone_model") + "|" + _
                  Rs.Fields("c_level_no") + "|" + Rs.Fields("c_spare_model") + "|" + _
                  Rs.Fields("c_warranty") + "|"
    DoEvents
    Rs.MoveNext
    Wend像这个好像不行。请问你能给我一个可行的代码示例么。
    等了好久多没有显示数据
      

  10.   

    DoEvents 只是让楼主的 VB不挂起,没有其他的意思.VB6中字符串的拼串很耗费时间的.不像.NET中有StringBuilder楼主还是设计有些问题,是否考虑分批发送给客户端,或者减少发送的笔数?
      

  11.   

    哦,又学到了。现在我就是想分批发送送啊。除了除了SELECT COUNT(*) FROM table_name方法以外,还有别的方法不。
      

  12.   

    可以用这个试试:
    StringBuilder Class for VB
    http://www.vbaccelerator.com/home/VB/code/Techniques/StringBuilder/article.asp
      

  13.   

    我认为,这种一次性读取10000条记录的设计就是错的。
    你可以每次读1000条呀,10次就行了。
    具体要在sql语句中控制。
    这就是“分页”