| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 354 人关注过本帖
标题:发个控件问题
只看楼主 加入收藏
yyttdd63
Rank: 1
等 级:新手上路
帖 子:65
专家分:5
注 册:2008-8-29
结帖率:100%
收藏
 问题点数:0 回复次数:0 
发个控件问题
我封装的控件NetClient
模块中用了
Public DB As New Connection   'ado对象中的连接对象
Public Rs As New Recordset    'ado对象中的记录集合对象
。。。。
在控件接收部分代码
Option Explicit
Public Event RsCome(ByRef objRs As Recordset)'定义了一个事件
。。。
Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)
    Dim tmpData() As Byte
    Dim Finis As String, FinisData(3) As Byte   '存取结尾标志

    '当数据超过8k时,winsock会分包发送
    '所以要组合结尾前的全部数据
    Static rsData() As Byte  '记录集数组
    Static rsLength As Long
    Static ICount As Integer

    'tmpData接收数据
    tcpClient.GetData tmpData, vbArray + vbByte

    '把接收的数据保存在rsData中
    If ICount = 0 Then              '第一次接收
        rsData = tmpData
        ICount = 1
    Else
        ReDim Preserve rsData(rsLength + bytesTotal)
        CopyMemory rsData(rsLength + 1), tmpData(0), bytesTotal
    End If
    rsLength = UBound(rsData)    'rsData的长度

    '判断结尾(结尾4个字节)
    CopyMemory FinisData(0), rsData(rsLength - 3), 4
    Finis = FinisData
    If Finis = "!@" Then
        '如果是结尾,截断结尾标志数据
        ReDim Preserve tmpData(rsLength - 4)
        Set Rs = BimaryToRecordset(rsData)    '还原记录集
        RaiseEvent RsCome(Rs)
        Debug.Print "收到服务器数据鸟"
       (这里我测试把rs写入临时文件,然后通过其他度取记录集,显示正常,应该说明rs正常))
        Erase rsData
        ICount = 0
        rsLength = 0
        Set Rs = Nothing
    End If
End Sub
现在不知怎么把“rs"输出到新的form1中
2011-06-14 15:03
快速回复:发个控件问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024172 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved