我现在做一个管理系统,这个管理系统有两个部分,一个是服务器,一个是客服端,我现在不知道怎么才能够把服务器上的SQL查的结果发送到客服端去,服务器查找是这么写的
Dim rstview As Recordset
tvTag = List1.Text
  Set rstview = New ADODB.Recordset
    
        rstview.Open "Select * from " & "[" & tvTag & "]", "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" & User & ";Password=" & Pass & ";Initial Catalog=" & dbName & ";Data Source=" & srvName & "", adOpenStatic, adLockReadOnly
 
        Set DataGrid1.DataSource = rstview  
我想就用s_sock.sendata rstview 发出去,可是不知道怎么发不出去,
请问一下,这个怎么做,还有客服端应该怎么写,谢谢
         

解决方案 »

  1.   

    你为什么一定要把记录发给它呢
    s_sock.sendata 发送的数据格式也不提供这样的啊,文本形式或者二进制形式。
    楼上说的没错,如果客户端要请求数据时,直接访问就可以了
    如果真的要发送的话,你就给客户端发一个 sql 脚本也可以啊
      

  2.   

    使用 winsock 发送数据只能发送 文本或字节
    不能发送对象,也不能发送数组你可以自己定义一种发送格式,也可以利用 Recodeset.GetString  的方法返回
    记录集中的文本串,然后 send 出去
    在客户端使用分割该字符串为数组,然后填充对应的表格
    将 Recordset 作为字符串返回。Recodeset.GetString   语法Set Variant = recordset.GetString(StringFormat, NumRows, ColumnDelimiter, RowDelimiter, NullExpr)返回值将 Recordset 按字符串值的变体型 (BSTR) 返回。参数StringFormat    指定 Recordset 应转换为下列格式。常量 说明 
    adClipString 行由 RowDelimiter 分界,列由 ColumnDelimiter 分界,NULL  值由 NullExpr 分界。这三个参数只有在与 adClipString 一起时才有效。 
    NumRows    可选。记录集要转换的行数。如果没有指定 NumRows,或者它大于记录集的总行数,则记录集的所有行都要转换。ColumnDelimiter    可选。如果指定则为列与列之间的分界符,否则为 TAB 字符。RowDelimiter    可选。如果指定则为行与行之间的分界符,否则为 CARRIAGE RETURN 字符。NullExpr    可选。如果指定则为 NULL 值处的表达式,否则为空字符串。
      

  3.   

    呵呵,想的很好,winsocket只能发送文本和2晋职,不能是对象 ado.net也只是借助xml才实现的离线记录集