小弟不才,遇到一个问题,如题所示。

解决方案 »

  1.   

    就是将一个Class 序列化成对应的字符串。
      

  2.   


    Option Explicit'* ************************************** *
    '* 模块名称:modStream.bas
    '* 模块功能:序列化类对象为字符串
    '* 作者:lyserver
    '* ************************************** *'- -----------------------------------
    ' 函数说明:将类对象序列化为字符串
    '- -----------------------------------
    Function ObjectSaveToString(objSource As Object, KeyName As String) As String
        Dim i As Long
        Dim objBag As New PropertyBag
        Dim bytData() As Byte
        
        On Error Resume Next
        If objSource Is Nothing Or Len(KeyName) = 0 Then Exit Function
        
        objBag.WriteProperty KeyName, objSource
        bytData = objBag.Contents
        For i = 0 To UBound(bytData)
            ObjectSaveToString = ObjectSaveToString & IIf(bytData(i) < 16, "0", "") & Hex(bytData(i))
        Next
    End Function'- -----------------------------------
    ' 函数说明:从字符串中加载类对象
    '- -----------------------------------
    Function ObjectLoadFromString(strSource As String, KeyName As String) As Object
        Dim i As Long, nLen As Long
        Dim objBag As New PropertyBag
        Dim bytData() As Byte
        
        On Error Resume Next
        nLen = Len(strSource)
        If nLen = 0 Or Len(KeyName) = 0 Then Exit Function
        
        ReDim bytData(nLen / 2 - 1)
        For i = 0 To UBound(bytData)
            bytData(i) = Val("&H" & Mid(strSource, i * 2 + 1, 2))
        Next
        objBag.Contents = bytData
        Set ObjectLoadFromString = objBag.ReadProperty(KeyName)
    End Function'测试代码如下:
    Sub Main()
        Dim rstTemp As Object
        Dim strStream As String
        
        '创建一个临时ADO记录集对象
        Set rstTemp = CreateObject("ADODB.Recordset")
        rstTemp.Fields.Append "姓名", adBSTR, 4 '设置临时记录集字段
        rstTemp.Fields.Append "性别", adBSTR, 1
        rstTemp.Open '打开记录集
        rstTemp.AddNew Array("姓名", "性别"), Array("张三", "男") '添加记录
        
        '将记录集对象序列化为字符串
        strStream = ObjectSaveToString(rstTemp, "rstTemp")
        
        '关闭并销毁ADO记录集对象
        rstTemp.Close
        Set rstTemp = Nothing
        
        '从字符串中加载记录集对象
        Set rstTemp = ObjectLoadFromString(strStream, "rstTemp")
        Debug.Print rstTemp.Fields(0).Value '显示结果
        
        '关闭并销毁ADO记录集对象
        rstTemp.Close
        Set rstTemp = Nothing
    End Sub