vb xml

http://www.360doc.com/content/13/1026/11/14285739_324294674.shtml

 

 

 

 Private Sub GenerateTaxFileXml(ByRef iTaxYr As Short)
        On Error GoTo erhd
        Dim sFileName As String
        Dim oFileSys As Scripting.FileSystemObject
        Dim xmlDoc As MSXML2.DOMDocument
        Dim Root As MSXML2.IXMLDOMElement

        Dim oTextStream As Scripting.TextStream

        Dim oSQL As ClsMySQL
        'Dim rsRv As ADODB.Recordset
        Dim sBuffer As String
        Dim sBufferHeader As String

        Dim sEmpyrTaxFIleNo As String
        Dim sEmpyrNm As String
        Dim sDesgn As String
        Dim lRecordCount As Integer
        Dim cTotAmt As Decimal
        Dim lBtNo As Integer
        Dim sSubDte As String
        Dim sMsg As String

        oSQL = New ClsMySQL

        sFileName = GetExportDir() & VB6.Format(iTaxYr, "0000") & sTaxFile
        oFileSys = New Scripting.FileSystemObject

        '生成一个XML DOMDocument对象
        xmlDoc = New MSXML2.DOMDocument

        '生成根节点并把它设置为文件的根
        Root = xmlDoc.createElement("IR56B")
        xmlDoc.documentElement = Root
        '在节点上添加多个属性
        Call Root.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
        Call Root.setAttribute("xmlns", "http://www.kingdee.com/ReK3Inventory")






        '-------------------------------------
        'Dim XmlWrite As System.Xml.XmlTextWriter = New System.Xml.XmlTextWriter(sFileName, System.Text.Encoding.UTF8)
        ' XmlWrite.WriteStartDocument() '开始一个文档,写下图第一行
        'XmlWrite.WriteStartElement("IR56B") '开始一个元素,根元素
        'XmlWrite.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance") '元素属性
        'XmlWrite.WriteAttributeString("xsi:noNamespaceSchemaLocation", "ir56b.xsd") '元素属性
        'XmlWrite.WriteStartElement("Section") '开始一个元素book






        oTextStream = oFileSys.OpenTextFile(sFileName, Scripting.IOMode.ForWriting, True)
        Using gConAPCA As New OleDbConnection(gStrAPCA)
            oSQL.ReSet_Renamed()
            oSQL.SqlType = ClsMySQL.StatmentType.TYPE_SELECT
            oSQL.AddTable("TBL_APCA_FST_PTY_INFO")
            oSQL.AddFields("TAX_FL_NO", "NM", "DESGN")

            gReader = QueryByReader(gConAPCA, oSQL.SQL)

            If gReader.Read Then
                sEmpyrTaxFIleNo = Null2Str(gReader("TAX_FL_NO"))
                sEmpyrNm = Null2Str(gReader("NM"))
                sDesgn = Null2Str(gReader("DESGN"))

            End If
            gReader.Close()

            oSQL.ReSet_Renamed()
            oSQL.AddTable("TBL_APCA_TAX_REPORT")
            oSQL.AddSimpleFuncField("COUNT", , , "REC_COUNT")
            oSQL.AddSimpleFuncField("SUM", "TOT_INCOME", , "TOT")
            oSQL.AddFields("BT_NO", "SUB_DTE")
            oSQL.AddGroupBy("BT_NO")
            oSQL.AddGroupBy("SUB_DTE")

            gReader = QueryByReader(gConAPCA, oSQL.SQL)

            If gReader.Read Then
                lRecordCount = Null2Zero(gReader("REC_COUNT"))
                cTotAmt = Null2Zero(gReader("TOT"))
                lBtNo = CInt(Null2Str(gReader("BT_NO")))
                sSubDte = VB6.Format(gReader("SUB_DTE").ToString, "YYYYMMDD")
            End If
            gReader.Close()

            sBuffer = FillStringWithSpaceRight(VB.Left(sEmpyrTaxFIleNo, 3), 3)
            sBuffer = sBuffer & FillStringWithSpaceRight(VB.Right(sEmpyrTaxFIleNo, 8), 8)
            sBuffer = sBuffer & FillStringWithSpaceRight(CStr(iTaxYr), 4)
            sBuffer = sBuffer & FillStringWithSpaceRight(sSubDte, 8)
            sBuffer = sBuffer & FillStringWithZero(CStr(lBtNo), 5)
            sBuffer = sBuffer & New String("0", 6)
            sBuffer = sBuffer & Space(9)
            sBuffer = sBuffer & FillStringWithSpaceRight(sEmpyrNm, 70)
            sBuffer = sBuffer & FillStringWithSpaceRight(sDesgn, 25)
            sBuffer = sBuffer & FillStringWithZero(CStr(lRecordCount), 5)
            sBuffer = sBuffer & FillStringWithZero(CStr(cTotAmt), 11)
            sBuffer = sBuffer & Space(1480)
            oTextStream.WriteLine(sBuffer)

            oSQL.ReSet_Renamed()
            oSQL.SqlType = ClsMySQL.StatmentType.TYPE_SELECT
            oSQL.AddTable("TBL_APCA_TAX_REPORT")

            sBufferHeader = FillStringWithSpaceRight(VB.Left(sEmpyrTaxFIleNo, 3), 3)
            sBufferHeader = sBufferHeader & FillStringWithSpaceRight(VB.Right(sEmpyrTaxFIleNo, 8), 8)
            sBufferHeader = sBufferHeader & FillStringWithSpaceRight(CStr(iTaxYr), 4)
            sBufferHeader = sBufferHeader & FillStringWithSpaceRight(sSubDte, 8)
            sBufferHeader = sBufferHeader & FillStringWithZero(CStr(lBtNo), 5)


            gReader = QueryByReader(gConAPCA, oSQL.SQL)

            Do While gReader.Read

                sBuffer = sBufferHeader & FillStringWithZero(CStr(gReader("SHEET_NO").ToString), 6)
                sBuffer = sBuffer & FillStringWithSpaceLeft(Null2Str(gReader("HK_ID")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("STUS")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("S_NM")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("NM")), 55)
                sBuffer = sBuffer & FillChiStringWithSpaceRight(Null2Str(gReader("C_NM")), 50)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("GENDER")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("M_STUS")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PASPT_NO")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PASPT_ISSUE_BY")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_NM")), 50)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_HKID")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_PASPT_NO")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_PASPT_ISSUE_BY")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_ADDR")), 90)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("AR_CDE")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("CORR_ADDR")), 60)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("CAPCTY")), 40)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRIN_EMPYR")), 30)
                sBuffer = sBuffer & VB6.Format(gReader("JOIN_DTE").ToString, "YYYYMMDD")
                sBuffer = sBuffer & VB6.Format(gReader("CESS_DTE").ToString, "YYYYMMDD")
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_SLRY")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("SLRY")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_LEV_PAY")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("LEV_PAY")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_DIR_FEE")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("DIR_FEE")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_COMM")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("COMM")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_BNS")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("BNS")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_BACK_PAY")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("BACK_PAY")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_RETR_SCHM_PMNT")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RETR_SCHM_PMNT")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_SLRY_TAX_EMPYR")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("SLRY_TAX_EMPYR")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_EDUC_BNF")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("EDUC_BNF")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_SHR_OPT_GAIN")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("SHR_OPT_GAIN")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_NATURE1")), 35)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_PRD1")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RWD_AMT1")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_NATURE2")), 35)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_PRD2")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RWD_AMT2")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_NATURE3")), 35)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_PRD3")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RWD_AMT3")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_PNSN")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("PNSN")), 9)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("TOT_INCOME")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_IND")), 1)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_ADDR_1")), 110)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_NATURE_1")), 19)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_R_1")), 26)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_1")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYE_1")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_RFND_EMPYE_1")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_EMPYE_1")), 7)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_ADDR_2")), 110)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_NATURE_2")), 19)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_R_2")), 26)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_2")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYE_2")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_RFND_EMPYE_2")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_EMPYE_2")), 7)


                If gReader("OSEA_AMT").Equals(DBNull.Value) And gReader("OSEA_ADDR").Equals(DBNull.Value) And gReader("OSEA_NM").Equals(DBNull.Value) Then
                    sBuffer = sBuffer & "0"
                Else
                    sBuffer = sBuffer & "1"
                End If

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("OSEA_AMT")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("OSEA_NM")), 60)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("OSEA_ADDR")), 60)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("EMPYE_TAX_FL_NO")), 13)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RMK")), 60)

                oTextStream.WriteLine(sBuffer)
                'rsRv.MoveNext()
            Loop
            gReader.Close()

            'End of file
            oTextStream.Write(Chr(26))

            oTextStream.Close()

            oSQL.ReSet_Renamed()
            oSQL.SqlType = ClsMySQL.StatmentType.TYPE_INSERT
            oSQL.AddTable("TBL_APCA_AUD_LOG")

            oSQL.AddField("USR")
            oSQL.AddValue(sUserID)

            oSQL.AddField("ACT")
            oSQL.AddValue("S")

            oSQL.AddField("LOG_TM")
            oSQL.AddValue(VB6.Format(Today, "dd MMM YYYY") & " " & TimeOfDay)

            oSQL.AddField("DESC")

            sMsg = FormatMsg(My.Resources.str19011, CStr(iTaxYr), oFileSys.GetAbsolutePathName(sFileName))
            oSQL.AddValue(sMsg)
            'OpenRs(oSQL.SQL)

            Call ExeNonQuery(gConAPCA, oSQL.SQL)


            ShowInfo(sMsg)


            '直接保存成文件即可
            'xmlDoc.save(sFileName)

            '调用IE浏览器打开xml文件
            ShellExecute(Me.Handle.ToInt32, "explore", oFileSys.GetParentFolderName(sFileName) & vbNullChar, "", "", modShell.enuShowWindow.SW_SHOW)

            oTextStream = Nothing
            oFileSys = Nothing
            'rsRv = Nothing
            oSQL = Nothing
        End Using

        Exit Sub
erhd:
        oTextStream = Nothing
        oFileSys = Nothing
        'rsRv = Nothing
        oSQL = Nothing
        MyErrorRaise(Err.Description)
    End Sub

 

 

 

------------------------

 

Dim oFso As New FileSystemObject
Dim oFile As Object
Dim xmlDoc As MSXML2.DOMDocument

 

    nowDate = CStr(Year(Date)) & CStr(Month(Date)) & CStr(Day(Date))
    ePath = expPath.Text + "/" + nowDate
     
    Set xmlDoc = New MSXML2.DOMDocument
    xmlDoc.validateOnParse = False
    xmlDoc.async = False
    
    Set oFso = CreateObject("scripting.filesystemobject")
    If oFso.FileExists(ePath + ".xml") Then
        oFso.DeleteFile ePath + ".xml"
    End If
    Set oFile = oFso.OpenTextFile(ePath + ".xml", 8, True) 

 

Dim str As String
    str = "select ajbh from gab_mala where ifexp is null or ifexp=''"
    oRs.Open str, oConn, 1, 1
    
    Do While Not oRs.EOF
    
        tempzdaj = "<zdaj:record ajbh='" + oRs("ajbh") + "'><ma><la>"
        oFile.WriteLine (tempzdaj)
        
        '基本信息
        str = "select xckybh,ladwdm,ladwxc,ajlb1,ajlb2,ajlb3,ajxz1,larq,swrs,ssrs,fxdz,fxdzxz,fxcs,fxbw,zwyw,dnayw,"
        str = str + "zjyw,xdhwyw,gj,gjhj,qthjwz,bjwp,zasjsx,zasjxx,fxzarscz,fxzarszz,zagj,qhdx,srcs,qrfs,jcfs,srfs,"
        str = str + "wzmj,tlfs,zasdtdms,aqms,zayy,lcfzyj,zazzhzbzcy,lxdh,xsjsfzr,gajgfzr,tbr,tbrq from gab_mala where ajbh='" & oRs("ajbh") & "'"
        oRsTemp.Open str, oConn, 1, 1
       
        Do While Not oRsTemp.EOF
            Set root = xmlDoc.createNode(1, "jbxx", "")
            Set temp = xmlDoc.appendChild(root)
            
            Set onode = xmlDoc.createNode("element", "rec", "")
            Set temp = root.appendChild(onode)
            
                For i = 0 To oRsTemp.Fields.Count - 1
                
                Set child = xmlDoc.createNode("element", oRsTemp.Fields(i).Name, "")
                  
                If Not IsNull(oRsTemp.Fields(i)) Then
                    If oRsTemp.Fields(i).Name = UCase("fxcs") Or oRsTemp.Fields(i).Name = UCase("fxbw") Or oRsTemp.Fields(i).Name = UCase("zagj") Or oRsTemp.Fields(i).Name = UCase("qhdx") Or oRsTemp.Fields(i).Name = UCase("srcs") Or oRsTemp.Fields(i).Name = UCase("qrfs") Or oRsTemp.Fields(i).Name = UCase("jcfs") Or oRsTemp.Fields(i).Name = UCase("srfs") Or oRsTemp.Fields(i).Name = UCase("wzmj") Or oRsTemp.Fields(i).Name = UCase("zayy") Then
                        childext = CL(oRsTemp.Fields(i))
                    Else.T
                        child.Text = oRsTemp.Fields(i)
                    End If
                Else
                    child.Text = ""
                End If
                  
                  Set temp = onode.appendChild(child)
                Next
                
                rstoxml = root.xml

            oFile.WriteLine (rstoxml)
            xmlDoc.removeChild (root)
       
            oRsTemp.MoveNext
        Loop
        oRsTemp.Close

'人员
        
        str = "select manid from caseman where caseno='" & oRs("ajbh") & "'"
        oRs1.Open str, oConn, 1, 1
        
        If oRs1.RecordCount > 0 Then
            Set root = xmlDoc.createNode(1, "xyry", "")
            Set temp = xmlDoc.appendChild(root)
        End If
        
        Do While Not oRs1.EOF
            str = "select ztrybh,name as xm,othername as bmhch,sex as xb,birthday as csrqsx,birthday as csrqxx,jzd as hjd,ABODEADDR as hjdxz,STATURE as sgsx,STATURE as sgxx,ACCENT as ky,BODYSHAPE as tmtz,FACESHAPE as tbbj,'' as qttz,SPEC as zc,CARDID as sfzh,'' as qtzjmc,'' as qtzjhm,'' as zp from smaninfo"
            str = str + " where manid='" & oRs1("manid") & "'"
            oRsTemp.Open str, oConn, 1, 1
            
            Do While Not oRsTemp.EOF
                
                
                Set onode = xmlDoc.createNode("element", "rec", "")
                Set temp = root.appendChild(onode)
                
                    For i = 0 To oRsTemp.Fields.Count - 1
                    
                    Set child = xmlDoc.createNode("element", oRsTemp.Fields(i).Name, "")
                      
                    If Not IsNull(oRsTemp.Fields(i)) Then
                        If oRsTemp.Fields(i).Name = UCase("ky") Or oRsTemp.Fields(i).Name = UCase("tmtz") Or oRsTemp.Fields(i).Name = UCase("tbbj") Or oRsTemp.Fields(i).Name = UCase("zc") Then
                            child.Text = CL(oRsTemp.Fields(i))
                        Else
                            If oRsTemp.Fields(i).Name = UCase("csrqsx") Or oRsTemp.Fields(i).Name = UCase("csrqxx") Then
                                child.Text = CLDate(oRsTemp.Fields(i))
                            Else
                                If oRsTemp.Fields(i).Name = UCase("ztrybh") Then
                                    child.Text = "T" + oRsTemp.Fields(i)
                                Else
                                    child.Text = oRsTemp.Fields(i)
                                End If
                            End If
                        End If
                    Else
                        child.Text = ""
                    End If
                      
                      Set temp = onode.appendChild(child)
                    Next
                                      
                oRsTemp.MoveNext
            Loop
            oRsTemp.Close
            
            oRs1.MoveNext
        Loop
        
        If oRs1.RecordCount > 0 Then
            rstoxml = root.xml
            oFile.WriteLine (rstoxml)
            xmlDoc.removeChild (root)
        End If
        
        oRs1.Close

        tempzdaj = "</la></ma></zdaj:record>"
        oFile.WriteLine (tempzdaj)
        oRs.MoveNext
        
    Loop
    
    oRs.Close

set oFso=Nothing

 

 

        '生成一个XML DOMDocument对象
        xmlDoc = New MSXML2.DOMDocument

        '生成根节点并把它设置为文件的根
        Root = xmlDoc.createElement("employees")
        xmlDoc.documentElement = Root
        '在节点上添加多个属性
        Call Root.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
        Call Root.setAttribute("xmlns", "http://www.kingdee.com/ReK3Inventory")

        '添加xml文件格式:换行+空格 (1级节点)

        Root.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))



        '添加DataService节点

        Dim eleDataService As MSXML2.IXMLDOMElement

        eleDataService = xmlDoc.createElement("DataService")

        Root.appendChild(eleDataService)



        '添加xml文件格式:换行+空格+空格(2级节点)

        eleDataService.appendChild(xmlDoc.createTextNode(vbCrLf & Space(16)))



        '添加 Name 属性

        eleDataService.setAttribute("Name", "zhuyl")



        '添加DataService节点的子节点 Ip

        Dim eleDataServiceIp As MSXML2.IXMLDOMElement

        eleDataServiceIp = xmlDoc.createElement("Ip")

        eleDataService.appendChild(eleDataServiceIp)



        '添加xml文件格式:换行+空格(1级节点),结束1级节点配置

        eleDataService.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))



        '添加xml文件格式:换行+空格+空格,结束根结点配置     

        Root.appendChild(xmlDoc.createTextNode(vbCrLf))


 
 
 
 
 
 
 
 
 
 
 
 --------------------
 
 '2、  读取xml



        adapterConfigFilePath = Me.maFileName & "AdapterConfig.xml"

        xmlDom = New DOMDocument50

        xmlDoc.async = False  '是否同步

        xmlDoc.load(adapterConfigFilePath)



        '如果文件存在,但大小为0字节,则删除该文件

        If (fso.FileExists(adapterConfigFilePath) = True) Then

            If (fso.GetFile(adapterConfigFilePath).Size = 0) Then

                fso.GetFile(adapterConfigFilePath).Delete()

            End If

        End If



        '检查AdapterConfig.xml文件是否存在:若存在,则读取文件的值,并显示在窗体上

        If (fso.FileExists(adapterConfigFilePath) = True) Then



            element = xmlDoc.selectSingleNode("//AdapterConfig")

            Me.txtAdapterName.Text = element.selectSingleNode("AdapterName").Text



            Dim strAdapterType As String

            strAdapterType = element.selectSingleNode("AdapterType").Text

            If (strAdapterType = "DataBase" Or strAdapterType = "") Then

                '单选按钮数据库 设置为被选中

                Me.optAdapterType1.Item(0).Value = True

            Else



                If (strAdapterType = "File") Then

                    Me.optAdapterType1.Item(1).Value = True

                ElseIf (strAdapterType = "Api") Then

                    Me.optAdapterType1.Item(2).Value = True

                ElseIf (strAdapterType = "SDE") Then

                    Me.optAdapterType1.Item(3).Value = True

                End If

            End If



            '应用,为应用列表赋值

            elePM = element.selectSingleNode("ApplicationParameter")

            If (Not (elePM Is Nothing)) Then

                paramList = element.selectNodes("ApplicationParameter")

                For i = 0 To paramList.length - 1

                    eleParam = paramList.Item(i)

                    Me.lstAppParameter.AddItem(eleParam.getAttribute("Name"))

                Next

            End If





            '3、  修改xml

            Dim fso As New FileSystemObject



            netConfigPath = frmMain.maFileName & "AdapterNetConfig.xml"

            xmlDom = New DOMDocument50

            xmlDoc.async = False  '是否同步

            xmlDoc.load(netConfigPath)



            '检查AdapterNetConfig.xml文件是否存在:若不存在,则创建;存在,则显示值到窗体上If (fso.FileExists(netConfigPath) = True) Then



            '必填项全部填写,保存修改的内容

            Root = xmlDoc.selectSingleNode("AdapterNetConfig")



            '为节点赋值

            Root.selectSingleNode("DataService/Ip").text = Me.txtAdapterReceiveIp.Text

            Root.selectSingleNode("DataService/Port").text = Me.txtAdapterReceivePort.Text

            Root.selectSingleNode("DataService/TimeOut").text = Me.txtAdapterReceiveTimeout.Text



            Root.selectSingleNode("CommandService/Ip").text = Me.txtCmdReceiveIp.Text

            Root.selectSingleNode("CommandService/Port").text = Me.txtCmdReceivePort.Text

            Root.selectSingleNode("CommandService/TimeOut").text = Me.txtCmdReceiveTimeout.Text



            Root.selectSingleNode("DataExchangeServer/Ip").text = Me.txtSendToServerIp.Text

            Root.selectSingleNode("DataExchangeServer/Port").text = Me.txtSendToServerPort.Text

            Root.selectSingleNode("DataExchangeServer/TimeOut").text = Me.txtSendToServerTimeout.Text



            xmlDoc.save(netConfigPath)

            MsgBox("保存成功!")

        End If





        '4、  xml文件格式化

        '获取AdapterConfig.xml所在路径--->maFileName

        adapterConfigFilePath = Me.maFileName & "AdapterConfig.xml"

        xmlDom = New DOMDocument50

        xmlDoc.async = False  '是否同步

        xmlDoc.load(adapterConfigFilePath)



        '如果文件存在,但大小为0字节,则删除该文件

        If (fso.FileExists(adapterConfigFilePath) = True) Then

            If (fso.GetFile(adapterConfigFilePath).Size = 0) Then

                fso.GetFile(adapterConfigFilePath).Delete()

            End If

        End If



        '检查AdapterConfig.xml文件是否存在:若存在,则读取文件的值,并显示在窗体上

        If (fso.FileExists(adapterConfigFilePath) = False) Then



            '创建文件

            If (MsgBox(adapterConfigFilePath & "不存在,现在就创建该文件吗?", vbYesNo, "创建文件提示") = vbYes) Then



                Dim root As IXMLDOMElement

                root = xmlDoc.createElement("AdapterConfig")

                xmlDoc.documentElement = root



                root.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))

                '添加 AdapterName 节点

                Dim eleAdpName As IXMLDOMElement

                eleAdpName = xmlDoc.createElement("AdapterName")

                root.appendChild(eleAdpName)



                root.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))

                '添加 AdapterType 节点

                Dim eleAdpType As IXMLDOMElement

                eleAdpType = xmlDoc.createElement("AdapterType")

                root.appendChild(eleAdpType)



                '设置默认值为“DataBase”

                Dim txtAdpTypeNew As IXMLDOMText

                txtAdpTypeNew = xmlDoc.createTextNode("DataBase")

                eleAdpType.appendChild(txtAdpTypeNew)



                root.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))

                '添加 AppParam 节点

                Dim eleAppParam As IXMLDOMElement

                eleAppParam = xmlDoc.createElement("AppParam")

                root.appendChild(eleAppParam)



                eleAppParam.appendChild(xmlDoc.createTextNode(vbCrLf & Space(16)))

                '添加 PacketSize 节点

                Dim elePacketSize As IXMLDOMElement

                elePacketSize = xmlDoc.createElement("PacketSize")

                eleAppParam.appendChild(elePacketSize)



                eleAppParam.appendChild(xmlDoc.createTextNode(vbCrLf & Space(16)))

                '添加 HeartBeatTime 节点

                Dim eleHeartBeatTime As IXMLDOMElement

                eleHeartBeatTime = xmlDoc.createElement("HeartBeatTime")

                eleAppParam.appendChild(eleHeartBeatTime)



                eleAppParam.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))



                root.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))

                '添加 ThreadNumber 节点

                Dim eleThreadNum As IXMLDOMElement

                eleThreadNum = xmlDoc.createElement("ThreadNumber")

                root.appendChild(eleThreadNum)



                eleThreadNum.appendChild(xmlDoc.createTextNode(vbCrLf & Space(16)))

                '添加 SendToServer 节点

                Dim eleThreadSendToServer As IXMLDOMElement

                eleThreadSendToServer = xmlDoc.createElement("SendToServer")

                eleThreadNum.appendChild(eleThreadSendToServer)



                eleThreadNum.appendChild(xmlDoc.createTextNode(vbCrLf & Space(16)))

                '添加 ReceiveApplication 节点

                Dim eleThreadReceiveApp As IXMLDOMElement

                eleThreadReceiveApp = xmlDoc.createElement("ReceiveApplication")

                eleThreadNum.appendChild(eleThreadReceiveApp)



                eleThreadNum.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))



                root.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))

                '添加 NoDataWaitTime 节点

                Dim eleNoDataWaitTime As IXMLDOMElement

                eleNoDataWaitTime = xmlDoc.createElement("NoDataWaitTime")

                root.appendChild(eleNoDataWaitTime)



                eleNoDataWaitTime.appendChild(xmlDoc.createTextNode(vbCrLf & Space(16)))

                '添加 SendToServer 节点

                Dim eleNoDataSendToServer As IXMLDOMElement

                eleNoDataSendToServer = xmlDoc.createElement("SendToServer")

                eleNoDataWaitTime.appendChild(eleNoDataSendToServer)



                eleNoDataWaitTime.appendChild(xmlDoc.createTextNode(vbCrLf & Space(16)))

                '添加 ReceiveApplication 节点

                Dim eleNoDataReceiveApp As IXMLDOMElement

                eleNoDataReceiveApp = xmlDoc.createElement("ReceiveApplication")

                eleNoDataWaitTime.appendChild(eleNoDataReceiveApp)



                eleNoDataWaitTime.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))



                root.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))

                '添加 FailedOperationWaitTime 节点

                Dim eleFailedWaitTime As IXMLDOMElement

                eleFailedWaitTime = xmlDoc.createElement("FailedOperationWaitTime")

                root.appendChild(eleFailedWaitTime)



                eleFailedWaitTime.appendChild(xmlDoc.createTextNode(vbCrLf & Space(16)))

                '添加 SendToServer 节点

                Dim eleFailedSendToServer As IXMLDOMElement

                eleFailedSendToServer = xmlDoc.createElement("SendToServer")

                eleFailedWaitTime.appendChild(eleFailedSendToServer)



                eleFailedWaitTime.appendChild(xmlDoc.createTextNode(vbCrLf & Space(16)))

                '添加 ReceiveApplication 节点

                Dim eleFailedReceiveApp As IXMLDOMElement

                eleFailedReceiveApp = xmlDoc.createElement("ReceiveApplication")

                eleFailedWaitTime.appendChild(eleFailedReceiveApp)



                eleFailedWaitTime.appendChild(xmlDoc.createTextNode(vbCrLf & Space(8)))



                root.appendChild(xmlDoc.createTextNode(vbCrLf))

            End If

        End If



        ' //************* 上面的内容都保存在xmlDoc 中,在点击“保存”按钮的时候,暂不保存到文件,新创建一个xmlDocFormat 对象,读取 xmlDoc 对象中的值,填充到 xmlDocFormat 文档中,加上换行和空格,进行格式化操作 ************//



        '''''''' 格式化生成的xml文件 '''''''''''''



        '如果文件存在,但大小为0字节,则删除该文件,重新创建之

        If (fso.FileExists(adapterConfigFilePath) = True) Then

            fso.GetFile(adapterConfigFilePath).Delete()

            fso.CreateTextFile(adapterConfigFilePath)

        End If



        Dim xmlDocFormat As DOMDocument50

        Dim versionFormat As IXMLDOMProcessingInstruction



        xmlDocFormat = New DOMDocument50

        xmlDocFormat.async = False

        xmlDocFormat.Load(adapterConfigFilePath)



        '添加xml文件版本号,编码语言

        versionFormat = xmlDocFormat.createProcessingInstruction("xml", "version=" & Chr(34) & "1.0" & Chr(34) & Space(8) & "encoding=" & Chr(34) & "GBK" & Chr(34))

        xmlDocFormat.appendChild(versionFormat)



        '添加根结点

        Dim rootFormat As IXMLDOMElement

        rootFormat = xmlDocFormat.createElement("AdapterConfig")

        xmlDocFormat.documentElement = rootFormat





        '添加xml文件格式:换行+空格 (1级节点) 

        rootFormat.appendChild(xmlDocFormat.createTextNode(vbCrLf & Space(4)))



        '添加 AdapterName 节点

        Dim eleAdpNameFormat As IXMLDOMElement

        eleAdpNameFormat = xmlDocFormat.createElement("AdapterName")

        rootFormat.appendChild(eleAdpNameFormat)



        '设置 AdapterName 节点的值

        Dim txtAdpNameFormat As IXMLDOMText

        txtAdpNameFormat = xmlDocFormat.createTextNode(Root.selectSingleNode("AdapterName").text)

        eleAdpNameFormat.appendChild(txtAdpNameFormat)



        '添加xml文件格式:换行+空格 (1级节点) 

        rootFormat.appendChild(xmlDocFormat.createTextNode(vbCrLf & Space(4)))



        '添加 AdapterType 节点

        Dim eleAdpTypeFormat As IXMLDOMElement

        eleAdpTypeFormat = xmlDocFormat.createElement("AdapterType")

        rootFormat.appendChild(eleAdpTypeFormat)



        '设置 AdapterType 节点的值

        Dim txtAdpTypeFormat As IXMLDOMText

        txtAdpTypeFormat = xmlDocFormat.createTextNode(Root.selectSingleNode("AdapterType").text)

        eleAdpTypeFormat.appendChild(txtAdpTypeFormat)



        '添加xml文件格式:换行+空格 (1级节点) 

        rootFormat.appendChild(xmlDocFormat.createTextNode(vbCrLf & vbCrLf & Space(4)))



        '添加 AppParam 节点

        Dim eleAppParamFormat As IXMLDOMElement

        eleAppParamFormat = xmlDocFormat.createElement("AppParam")

        rootFormat.appendChild(eleAppParamFormat)



        '添加xml文件格式:换行+空格+空格 (2级节点) 

        eleAppParamFormat.appendChild(xmlDocFormat.createTextNode(vbCrLf & Space(8)))



        '添加 PacketSize 节点

        Dim elePacketSizeFormat As IXMLDOMElement

        elePacketSizeFormat = xmlDocFormat.createElement("PacketSize")

        eleAppParamFormat.appendChild(elePacketSizeFormat)



        '设置 PacketSize 节点的值

        Dim txtPacketSizeFormat As IXMLDOMText

        txtPacketSizeFormat = xmlDocFormat.createTextNode(Root.selectSingleNode("AppParam/PacketSize").text)

        elePacketSizeFormat.appendChild(txtPacketSizeFormat)





        '添加xml文件格式:换行+空格+空格 (2级节点) 

        eleAppParamFormat.appendChild(xmlDocFormat.createTextNode(vbCrLf & Space(8)))



        '添加 HeartBeatTime 节点

        Dim eleHeartBeatTimeFormat As IXMLDOMElement

        eleHeartBeatTimeFormat = xmlDocFormat.createElement("HeartBeatTime")

        eleAppParamFormat.appendChild(eleHeartBeatTimeFormat)



        '设置 HeartBeatTime 节点的值

        Dim txtHeartBeatTimeFormat As IXMLDOMText

        txtHeartBeatTimeFormat = xmlDocFormat.createTextNode(Root.selectSingleNode("AppParam/HeartBeatTime").text)

        eleHeartBeatTimeFormat.appendChild(txtHeartBeatTimeFormat)



        '添加xml文件格式:换行+空格格 (1级节点) 

        eleAppParamFormat.appendChild(xmlDocFormat.createTextNode(vbCrLf & Space(4)))



        '添加xml文件格式:换行+空格 (1级节点) 

        rootFormat.appendChild(xmlDocFormat.createTextNode(vbCrLf))



        xmlDocFormat.save(adapterConfigFilePath)

        MsgBox("保存成功!")

 

Dim oFileSys As Scripting.FileSystemObject
        Dim oFile As Scripting.TextStream

        Dim sFileName As String
        Dim xmlDoc As MSXML2.DOMDocument
        Dim Root As MSXML2.IXMLDOMElement
        Dim Rs As ADODB.Recordset
        Dim Conn As ADODB.Connection
        Dim tempNode As MSXML2.IXMLDOMNode
        Dim emp As MSXML2.IXMLDOMElement

        oFileSys = New Scripting.FileSystemObject
        sFileName = GetExportDir() & VB6.Format(iTaxYr, "0000") & sTaxFile

        'delete old tax file
        If oFileSys.FileExists(sFileName) Then
            oFileSys.DeleteFile(sFileName)
        End If

        oFile = oFileSys.OpenTextFile(sFileName, Scripting.IOMode.ForWriting, True)

        '生成一个XML DOMDocument对象
        xmlDoc = New MSXML2.DOMDocument
        xmlDoc.validateOnParse = False
        xmlDoc.async = False

        '生成根节点并把它设置为文件的根
        Root = xmlDoc.createElement("employees")
        xmlDoc.documentElement = Root
        '在节点上添加多个属性
        Call Root.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
        Call Root.setAttribute("xmlns", "http://www.kingdee.com/ReK3Inventory")

 

如何通过VB处理XML 
首先要引用一个Microsoft XML 随便选个版本。 
在初始化的时候读取XML显示到TXTBOX中,代码如下: '通过2进制流将XML文件读出来,也可以是其它文件格式
Private Function pstrUpdateView(istrXMLPath As String) As String
    Dim wlngFreeFile As Long
    Dim wbytwbytLoadBytes() As Byte
    '获得一个空闲文件号
    wlngFreeFile = FreeFile
    Open istrXMLPath For Binary As #wlngFreeFile
    ReDim wbytLoadBytes(1 To LOF(wlngFreeFile)) As Byte
    Get #wlngFreeFile, , wbytLoadBytes
    Close wlngFreeFile
    
    pstrUpdateView = StrConv(wbytLoadBytes, vbUnicode)
End Function
装载XML。传进去一个XML地址,如果装载不成功就error,成功则执行下一步 Private Sub fsubLoadXML(istrXMLPath As String)
    Set pobjXMLDoc = CreateObject("MSXML2.DOMDocument")
    If pobjXMLDoc.Load(istrXMLPath) = False Then
        On Error GoTo LoadXMLErr:
    End If
    
    On Error GoTo 0
    Exit Sub
LoadXMLErr:
    Dim myErr
    Set myErr = pobjXMLDoc.parseError
    MsgBox ("ERROR:" & myErr.reason)
    Set myErr = Nothing
End Sub
读属性。DOMDocument对象里有2个读节点的方法:
selectNodes() 如果根节点下有多个子节点就要用这个方法,item定义了第几个子节点
selectSingleNode()如果根节点下只有一个字节点可以用这个方法

Private Function fstrReadAttr(istrNodes As String, istrAttribute As String) As String
On Error GoTo ErrHandle:
    Dim wobjXmlAttr As MSXML2.IXMLDOMAttribute
    '
'    Set wobjXmlAttr = pobjXMLDoc.selectNodes(istrNodes).Item(0).Attributes.getNamedItem(istrAttribute)
    '
    Set wobjXmlAttr = pobjXMLDoc.selectSingleNode(istrNodes).Attributes.getNamedItem(istrAttribute)
    fstrReadAttr = wobjXmlAttr.Text
    
    'destroy object
    Set wobjXmlAttr = Nothing
    On Error GoTo 0
    Exit Function
ErrHandle:
    MsgBox Err.Description
    Set wobjXmlAttr = Nothing
End Function

读节点。 call fstrReadNode("/test/user") ,参数是test节点下的user子节点 Private Function fstrReadNode(istrNodes As String) As String
    Dim xNode As MSXML2.IXMLDOMNode
    Set xNode = pobjXMLDoc.selectSingleNode(istrNodes)
    fstrReadNode = xNode.Text
    Set xNode = Nothing
End Function
写节点。参数1:节点;参数2:需要写入的值 Private Sub fsubWriteNode(istrNodes As String, istrValue As String)
    Dim wobjXMLNode As IXMLDOMElement
    
    Set wobjXMLNode = pobjXMLDoc.documentElement.selectNodes(istrNodes).Item(0)

    wobjXMLNode.Text = istrValue

     Set wobjXMLNode = Nothing
End Sub



a sample :download



--------------------------------------------------------------------------------
转自:http://blog.csdn.net/kinytx/

MSXML 处理 xml 文档时外部DTD定义的问题(ASP)
项目中碰到这个问题,所以也贴了出来

xmlfile = "http://myserver/catalog.xml"
xslfile = "catalog.xsl"

' 创建相关对象
Set xslDoc = server.CreateObject("MSXML2.FreeThreadedDOMDocument")
Set xmlDoc = server.CreateObject("MSXML2.DOMDocument")

' 读取xsl文件
xsldoc.async = False
xsldoc.resolveExternals = True
xsldoc.load server.MapPath(xslfile)
' 读取xml文件
xmldoc.setProperty "ServerHTTPRequest",True  ' 设置ServerHTTPRequest 属性为 True 为了通过http协议载入xml文档
xmldoc.async = False ' 设置 async属性为 False 关闭异步调用
xmldoc.resolveExternals = True ' 设置 resolveExternals 为 True 打开外部DTD分析
xmldoc.validateOnParse = False ' 设置 validateOnParse 为 False 允许文档验证
xmldoc.load xmlfile ' 读取xml文档
Do While (xmldoc.ReadyState < 4)  ' 检查ReadyState状态值是否为4 ' 具体数值定义参见msxml sdk document
   xmldoc.waitForResponse 10 ' 通过waitForResponse方法等待文档完全读取完毕 ' 如果为读取完成,系统暂停10毫秒
Loop

' 转换xml -> html 并输出文档
xmldoc.transformNodeToObject xsldoc,Response

' 清空对象
Set xslt = Nothing
Set xsldoc = Nothing
Set xmldoc = Nothing

 

<?xml version="1.0" encoding="UTF-8"?>
<IR56B xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ir56b.xsd">
  <Section>6A1</Section>
  <ERN>01234561</ERN>
  <YrErReturn>2014</YrErReturn>
  <SubDate>20140420</SubDate>
  <ErName>ABCD COMPANY</ErName>
  <Designation>PARTNER</Designation>
  <NoRecordBatch>00002</NoRecordBatch>
  <TotIncomeBatch>360000</TotIncomeBatch>
    <Employee>
    <SheetNo>000001</SheetNo>
    <HKID>A1144556</HKID>
    <TypeOfForm>O</TypeOfForm>
    <Surname>AUYEUNG</Surname>
    <GivenName>TAI MAN</GivenName>
    <NameInChinese>歐陽大文</NameInChinese>
    <Sex>M</Sex>
    <MaritalStatus>2</MaritalStatus>
    <PpNum />
    <SpouseName>WONG, MEI MEI</SpouseName>
    <SpouseHKID>A456789A</SpouseHKID>
    <SpousePpNum />
    <ResAddr>Flat A, 8/F, 5 Mei Lai Road </ResAddr>
    <AreaCodeResAddr>K</AreaCodeResAddr>
    <PosAddr />
    <Capacity>CLERK</Capacity>
    <PtPrinEmp />
    <StartDateOfEmp>20130401</StartDateOfEmp>
    <EndDateOfEmp>20140331</EndDateOfEmp>
    <PerOfSalary>20130401 - 20140331</PerOfSalary>
    <AmtOfSalary>100000</AmtOfSalary>
    <PerOfLeavePay />
    <AmtOfLeavePay>0</AmtOfLeavePay>
    <PerOfDirectorFee />
    <AmtOfDirectorFee>0</AmtOfDirectorFee>
    <PerOfCommFee />
    <AmtOfCommFee>0</AmtOfCommFee>
    <PerOfBonus>20130401 - 20140331</PerOfBonus>
    <AmtOfBonus>50000</AmtOfBonus>
    <PerOfBpEtc />
    <AmtOfBpEtc>0</AmtOfBpEtc>
    <PerOfPayRetire />
    <AmtOfPayRetire>0</AmtOfPayRetire>
    <PerOfSalTaxPaid />
    <AmtOfSalTaxPaid>0</AmtOfSalTaxPaid>
    <PerOfEduBen />
    <AmtOfEduBen>0</AmtOfEduBen>
    <PerOfGainShareOption />
    <AmtOfGainShareOption>0</AmtOfGainShareOption>
    <NatureOtherRAP1 />
    <PerOfOtherRAP1 />
    <AmtOfOtherRAP1>0</AmtOfOtherRAP1>
    <NatureOtherRAP2 />
    <PerOfOtherRAP2 />
    <AmtOfOtherRAP2>0</AmtOfOtherRAP2>
    <NatureOtherRAP3 />
    <PerOfOtherRAP3 />
    <AmtOfOtherRAP3>0</AmtOfOtherRAP3>
    <PerOfPension />
    <AmtOfPension>0</AmtOfPension>
    <TotalIncome>150000</TotalIncome>
    <PlaceOfResInd>0</PlaceOfResInd>
    <AddrOfPlace1 />
    <NatureOfPlace1 />
    <PerOfPlace1 />
    <RentPaidEr1>0</RentPaidEr1>
    <RentPaidEe1>0</RentPaidEe1>
    <RentRefund1>0</RentRefund1>
    <RentPaidErByEe1>0</RentPaidErByEe1>
    <AddrOfPlace2 />
    <NatureOfPlace2 />
    <PerOfPlace2 />
    <RentPaidEr2>0</RentPaidEr2>
    <RentPaidEe2>0</RentPaidEe2>
    <RentRefund2>0</RentRefund2>
    <RentPaidErByEe2>0</RentPaidErByEe2>
    <OverseaIncInd>0</OverseaIncInd>
    <AmtPaidOverseaCo />
    <NameOfOverseaCo />
    <AddrOfOverseaCo />
    <Remarks />
  </Employee>
  <Employee>
    <SheetNo>000002</SheetNo>
    <HKID>K1234560</HKID>
    <TypeOfForm>O</TypeOfForm>
    <Surname>LEE</Surname>
    <GivenName>SIU SUM</GivenName>
    <NameInChinese>李小森</NameInChinese>
    <Sex>F</Sex>
    <MaritalStatus>1</MaritalStatus>
    <PpNum />
    <SpouseName />
    <SpouseHKID />
    <SpousePpNum />
    <ResAddr>Flat B 2/F Block C Happy Garden 1 Happy Road </ResAddr>
    <AreaCodeResAddr>H</AreaCodeResAddr>
    <PosAddr />
    <Capacity>MANAGER</Capacity>
    <PtPrinEmp />
    <StartDateOfEmp>20130401</StartDateOfEmp>
    <EndDateOfEmp>20140331</EndDateOfEmp>
    <PerOfSalary>20130401 - 20140331</PerOfSalary>
    <AmtOfSalary>210000</AmtOfSalary>
    <PerOfLeavePay />
    <AmtOfLeavePay>0</AmtOfLeavePay>
    <PerOfDirectorFee />
    <AmtOfDirectorFee>0</AmtOfDirectorFee>
    <PerOfCommFee />
    <AmtOfCommFee>0</AmtOfCommFee>
    <PerOfBonus />
    <AmtOfBonus>0</AmtOfBonus>
    <PerOfBpEtc />
    <AmtOfBpEtc>0</AmtOfBpEtc>
    <PerOfPayRetire />
    <AmtOfPayRetire>0</AmtOfPayRetire>
    <PerOfSalTaxPaid />
    <AmtOfSalTaxPaid>0</AmtOfSalTaxPaid>
    <PerOfEduBen />
    <AmtOfEduBen>0</AmtOfEduBen>
    <PerOfGainShareOption />
    <AmtOfGainShareOption>0</AmtOfGainShareOption>
    <NatureOtherRAP1 />
    <PerOfOtherRAP1 />
    <AmtOfOtherRAP1>0</AmtOfOtherRAP1>
    <NatureOtherRAP2 />
    <PerOfOtherRAP2 />
    <AmtOfOtherRAP2>0</AmtOfOtherRAP2>
    <NatureOtherRAP3 />
    <PerOfOtherRAP3 />
    <AmtOfOtherRAP3>0</AmtOfOtherRAP3>
    <PerOfPension />
    <AmtOfPension>0</AmtOfPension>
    <TotalIncome>210000</TotalIncome>
    <PlaceOfResInd>1</PlaceOfResInd>
    <AddrOfPlace1>Flat B 21/F Block C Happy Garden 1 Happy Garden 1 Happy Road HK</AddrOfPlace1>
    <NatureOfPlace1>Flat</NatureOfPlace1>
    <PerOfPlace1>20130401 - 20140331</PerOfPlace1>
    <RentPaidEr1>0</RentPaidEr1>
    <RentPaidEe1>120000</RentPaidEe1>
    <RentRefund1>120000</RentRefund1>
    <RentPaidErByEe1>0</RentPaidErByEe1>
    <AddrOfPlace2 />
    <NatureOfPlace2 />
    <PerOfPlace2 />
    <RentPaidEr2>0</RentPaidEr2>
    <RentPaidEe2>0</RentPaidEe2>
    <RentRefund2>0</RentRefund2>
    <RentPaidErByEe2>0</RentPaidErByEe2>
    <OverseaIncInd>0</OverseaIncInd>
    <AmtPaidOverseaCo />
    <NameOfOverseaCo />
    <AddrOfOverseaCo />
    <Remarks />
  </Employee>
</IR56B>

 

 Private Sub GenerateTaxFile(ByRef iTaxYr As Short)
        On Error GoTo erhd
        Dim oFileSys As Scripting.FileSystemObject
        Dim oTextStream As Scripting.TextStream

        Dim oSQL As ClsMySQL
        'Dim rsRv As ADODB.Recordset
        Dim sBuffer As String
        Dim sBufferHeader As String
        Dim sFileName As String

        Dim sEmpyrTaxFIleNo As String
        Dim sEmpyrNm As String
        Dim sDesgn As String
        Dim lRecordCount As Integer
        Dim cTotAmt As Decimal
        Dim lBtNo As Integer
        Dim sSubDte As String
        Dim sMsg As String

        oSQL = New ClsMySQL

        oFileSys = New Scripting.FileSystemObject
        sFileName = GetExportDir() & VB6.Format(iTaxYr, "0000") & sTaxFile

        'delete old tax file
        If oFileSys.FileExists(sFileName) Then
            oFileSys.DeleteFile(sFileName)
        End If

        oTextStream = oFileSys.OpenTextFile(sFileName, Scripting.IOMode.ForWriting, True)
        Using gConAPCA As New OleDbConnection(gStrAPCA)
            oSQL.ReSet_Renamed()
            oSQL.SqlType = ClsMySQL.StatmentType.TYPE_SELECT
            oSQL.AddTable("TBL_APCA_FST_PTY_INFO")
            oSQL.AddFields("TAX_FL_NO", "NM", "DESGN")

            gReader = QueryByReader(gConAPCA, oSQL.SQL)

            If gReader.Read Then
                sEmpyrTaxFIleNo = Null2Str(gReader("TAX_FL_NO"))
                sEmpyrNm = Null2Str(gReader("NM"))
                sDesgn = Null2Str(gReader("DESGN"))

            End If
            gReader.Close()
'-------------------------
            oSQL.ReSet_Renamed()
            oSQL.AddTable("TBL_APCA_TAX_REPORT")
            oSQL.AddSimpleFuncField("COUNT", , , "REC_COUNT")
            oSQL.AddSimpleFuncField("SUM", "TOT_INCOME", , "TOT")
            oSQL.AddFields("BT_NO", "SUB_DTE")
            oSQL.AddGroupBy("BT_NO")
            oSQL.AddGroupBy("SUB_DTE")

            gReader = QueryByReader(gConAPCA, oSQL.SQL)

            If gReader.Read Then
                lRecordCount = Null2Zero(gReader("REC_COUNT"))
                cTotAmt = Null2Zero(gReader("TOT"))
                lBtNo = CInt(Null2Str(gReader("BT_NO")))
                sSubDte = VB6.Format(gReader("SUB_DTE").ToString, "YYYYMMDD")
            End If
            gReader.Close()

            sBuffer = FillStringWithSpaceRight(VB.Left(sEmpyrTaxFIleNo, 3), 3)
            sBuffer = sBuffer & FillStringWithSpaceRight(VB.Right(sEmpyrTaxFIleNo, 8), 8)
            sBuffer = sBuffer & FillStringWithSpaceRight(CStr(iTaxYr), 4)
            sBuffer = sBuffer & FillStringWithSpaceRight(sSubDte, 8)
            sBuffer = sBuffer & FillStringWithZero(CStr(lBtNo), 5)
            sBuffer = sBuffer & New String("0", 6)
            sBuffer = sBuffer & Space(9)
            sBuffer = sBuffer & FillStringWithSpaceRight(sEmpyrNm, 70)
            sBuffer = sBuffer & FillStringWithSpaceRight(sDesgn, 25)
            sBuffer = sBuffer & FillStringWithZero(CStr(lRecordCount), 5)
            sBuffer = sBuffer & FillStringWithZero(CStr(cTotAmt), 11)
            sBuffer = sBuffer & Space(1480)
            oTextStream.WriteLine(sBuffer)

            oSQL.ReSet_Renamed()
            oSQL.SqlType = ClsMySQL.StatmentType.TYPE_SELECT
            oSQL.AddTable("TBL_APCA_TAX_REPORT")

            sBufferHeader = FillStringWithSpaceRight(VB.Left(sEmpyrTaxFIleNo, 3), 3)
            sBufferHeader = sBufferHeader & FillStringWithSpaceRight(VB.Right(sEmpyrTaxFIleNo, 8), 8)
            sBufferHeader = sBufferHeader & FillStringWithSpaceRight(CStr(iTaxYr), 4)
            sBufferHeader = sBufferHeader & FillStringWithSpaceRight(sSubDte, 8)
            sBufferHeader = sBufferHeader & FillStringWithZero(CStr(lBtNo), 5)

            gReader = QueryByReader(gConAPCA, oSQL.SQL)
            Do While gReader.Read

                sBuffer = sBufferHeader & FillStringWithZero(CStr(gReader("SHEET_NO").ToString), 6)
                sBuffer = sBuffer & FillStringWithSpaceLeft(Null2Str(gReader("HK_ID")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("STUS")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("S_NM")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("NM")), 55)
                sBuffer = sBuffer & FillChiStringWithSpaceRight(Null2Str(gReader("C_NM")), 50)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("GENDER")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("M_STUS")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PASPT_NO")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PASPT_ISSUE_BY")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_NM")), 50)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_HKID")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_PASPT_NO")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_PASPT_ISSUE_BY")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_ADDR")), 90)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("AR_CDE")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("CORR_ADDR")), 60)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("CAPCTY")), 40)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRIN_EMPYR")), 30)
                sBuffer = sBuffer & VB6.Format(gReader("JOIN_DTE").ToString, "YYYYMMDD")
                sBuffer = sBuffer & VB6.Format(gReader("CESS_DTE").ToString, "YYYYMMDD")
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_SLRY")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("SLRY")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_LEV_PAY")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("LEV_PAY")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_DIR_FEE")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("DIR_FEE")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_COMM")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("COMM")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_BNS")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("BNS")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_BACK_PAY")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("BACK_PAY")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_RETR_SCHM_PMNT")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RETR_SCHM_PMNT")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_SLRY_TAX_EMPYR")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("SLRY_TAX_EMPYR")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_EDUC_BNF")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("EDUC_BNF")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_SHR_OPT_GAIN")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("SHR_OPT_GAIN")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_NATURE1")), 35)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_PRD1")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RWD_AMT1")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_NATURE2")), 35)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_PRD2")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RWD_AMT2")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_NATURE3")), 35)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_PRD3")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RWD_AMT3")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_PNSN")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("PNSN")), 9)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("TOT_INCOME")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_IND")), 1)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_ADDR_1")), 110)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_NATURE_1")), 19)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_R_1")), 26)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_1")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYE_1")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_RFND_EMPYE_1")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_EMPYE_1")), 7)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_ADDR_2")), 110)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_NATURE_2")), 19)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_R_2")), 26)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_2")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYE_2")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_RFND_EMPYE_2")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_EMPYE_2")), 7)


                If gReader("OSEA_AMT").Equals(DBNull.Value) And gReader("OSEA_ADDR").Equals(DBNull.Value) And gReader("OSEA_NM").Equals(DBNull.Value) Then
                    sBuffer = sBuffer & "0"
                Else
                    sBuffer = sBuffer & "1"
                End If

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("OSEA_AMT")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("OSEA_NM")), 60)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("OSEA_ADDR")), 60)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("EMPYE_TAX_FL_NO")), 13)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RMK")), 60)

                oTextStream.WriteLine(sBuffer)
                'rsRv.MoveNext()
            Loop
            gReader.Close()

            'End of file
            oTextStream.Write(Chr(26))
            
            oTextStream.Close()

            oSQL.ReSet_Renamed()
            oSQL.SqlType = ClsMySQL.StatmentType.TYPE_INSERT
            oSQL.AddTable("TBL_APCA_AUD_LOG")

            oSQL.AddField("USR")
            oSQL.AddValue(sUserID)

            oSQL.AddField("ACT")
            oSQL.AddValue("S")

            oSQL.AddField("LOG_TM")
            oSQL.AddValue(VB6.Format(Today, "dd MMM YYYY") & " " & TimeOfDay)

            oSQL.AddField("DESC")

            sMsg = FormatMsg(My.Resources.str19011, CStr(iTaxYr), oFileSys.GetAbsolutePathName(sFileName))
            oSQL.AddValue(sMsg)
            'OpenRs(oSQL.SQL)

            Call ExeNonQuery(gConAPCA, oSQL.SQL)


            ShowInfo(sMsg)

            ShellExecute(Me.Handle.ToInt32, "explore", oFileSys.GetParentFolderName(sFileName) & vbNullChar, "", "", modShell.enuShowWindow.SW_SHOW)

            oTextStream = Nothing
            oFileSys = Nothing
            'rsRv = Nothing
            oSQL = Nothing
        End Using

        Exit Sub
erhd:
        oTextStream = Nothing
        oFileSys = Nothing
        'rsRv = Nothing
        oSQL = Nothing
        MyErrorRaise(Err.Description)
    End Sub

 

Private Sub GenerateTaxFileXml(ByRef iTaxYr As Short)
        On Error GoTo erhd
        Dim sFileName As String
        Dim oFileSys As Scripting.FileSystemObject
        Dim xmlDoc As MSXML2.DOMDocument
        Dim Root As MSXML2.IXMLDOMElement

        Dim oTextStream As Scripting.TextStream

        Dim oSQL As ClsMySQL
        'Dim rsRv As ADODB.Recordset
        Dim sBuffer As String
        Dim sBufferHeader As String

        Dim sEmpyrTaxFIleNo As String
        Dim sEmpyrNm As String
        Dim sDesgn As String
        Dim lRecordCount As Integer
        Dim cTotAmt As Decimal
        Dim lBtNo As Integer
        Dim sSubDte As String
        Dim sMsg As String

        oSQL = New ClsMySQL

        sFileName = GetExportDir() & VB6.Format(iTaxYr, "0000") & sTaxFile
        oFileSys = New Scripting.FileSystemObject

        '生成一个XML DOMDocument对象
        xmlDoc = New MSXML2.DOMDocument

        '生成根节点并把它设置为文件的根
        'Root = xmlDoc.createElement("employees")
        'xmlDoc.documentElement = Root
        '-------------------------------------
        oTextStream = oFileSys.OpenTextFile(sFileName, Scripting.IOMode.ForWriting, True)
        Using gConAPCA As New OleDbConnection(gStrAPCA)
            oSQL.ReSet_Renamed()
            oSQL.SqlType = ClsMySQL.StatmentType.TYPE_SELECT
            oSQL.AddTable("TBL_APCA_FST_PTY_INFO")
            oSQL.AddFields("TAX_FL_NO", "NM", "DESGN")

            gReader = QueryByReader(gConAPCA, oSQL.SQL)

            If gReader.Read Then
                sEmpyrTaxFIleNo = Null2Str(gReader("TAX_FL_NO"))
                sEmpyrNm = Null2Str(gReader("NM"))
                sDesgn = Null2Str(gReader("DESGN"))

            End If
            gReader.Close()

            oSQL.ReSet_Renamed()
            oSQL.AddTable("TBL_APCA_TAX_REPORT")
            oSQL.AddSimpleFuncField("COUNT", , , "REC_COUNT")
            oSQL.AddSimpleFuncField("SUM", "TOT_INCOME", , "TOT")
            oSQL.AddFields("BT_NO", "SUB_DTE")
            oSQL.AddGroupBy("BT_NO")
            oSQL.AddGroupBy("SUB_DTE")

            gReader = QueryByReader(gConAPCA, oSQL.SQL)

            If gReader.Read Then
                lRecordCount = Null2Zero(gReader("REC_COUNT"))
                cTotAmt = Null2Zero(gReader("TOT"))
                lBtNo = CInt(Null2Str(gReader("BT_NO")))
                sSubDte = VB6.Format(gReader("SUB_DTE").ToString, "YYYYMMDD")
            End If
            gReader.Close()

            sBuffer = FillStringWithSpaceRight(VB.Left(sEmpyrTaxFIleNo, 3), 3)
            sBuffer = sBuffer & FillStringWithSpaceRight(VB.Right(sEmpyrTaxFIleNo, 8), 8)
            sBuffer = sBuffer & FillStringWithSpaceRight(CStr(iTaxYr), 4)
            sBuffer = sBuffer & FillStringWithSpaceRight(sSubDte, 8)
            sBuffer = sBuffer & FillStringWithZero(CStr(lBtNo), 5)
            sBuffer = sBuffer & New String("0", 6)
            sBuffer = sBuffer & Space(9)
            sBuffer = sBuffer & FillStringWithSpaceRight(sEmpyrNm, 70)
            sBuffer = sBuffer & FillStringWithSpaceRight(sDesgn, 25)
            sBuffer = sBuffer & FillStringWithZero(CStr(lRecordCount), 5)
            sBuffer = sBuffer & FillStringWithZero(CStr(cTotAmt), 11)
            sBuffer = sBuffer & Space(1480)
            oTextStream.WriteLine(sBuffer)

            oSQL.ReSet_Renamed()
            oSQL.SqlType = ClsMySQL.StatmentType.TYPE_SELECT
            oSQL.AddTable("TBL_APCA_TAX_REPORT")

            sBufferHeader = FillStringWithSpaceRight(VB.Left(sEmpyrTaxFIleNo, 3), 3)
            sBufferHeader = sBufferHeader & FillStringWithSpaceRight(VB.Right(sEmpyrTaxFIleNo, 8), 8)
            sBufferHeader = sBufferHeader & FillStringWithSpaceRight(CStr(iTaxYr), 4)
            sBufferHeader = sBufferHeader & FillStringWithSpaceRight(sSubDte, 8)
            sBufferHeader = sBufferHeader & FillStringWithZero(CStr(lBtNo), 5)


            gReader = QueryByReader(gConAPCA, oSQL.SQL)

            Do While gReader.Read

                sBuffer = sBufferHeader & FillStringWithZero(CStr(gReader("SHEET_NO").ToString), 6)
                sBuffer = sBuffer & FillStringWithSpaceLeft(Null2Str(gReader("HK_ID")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("STUS")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("S_NM")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("NM")), 55)
                sBuffer = sBuffer & FillChiStringWithSpaceRight(Null2Str(gReader("C_NM")), 50)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("GENDER")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("M_STUS")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PASPT_NO")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PASPT_ISSUE_BY")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_NM")), 50)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_HKID")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_PASPT_NO")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("SPO_PASPT_ISSUE_BY")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_ADDR")), 90)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("AR_CDE")), 1)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("CORR_ADDR")), 60)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("CAPCTY")), 40)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRIN_EMPYR")), 30)
                sBuffer = sBuffer & VB6.Format(gReader("JOIN_DTE").ToString, "YYYYMMDD")
                sBuffer = sBuffer & VB6.Format(gReader("CESS_DTE").ToString, "YYYYMMDD")
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_SLRY")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("SLRY")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_LEV_PAY")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("LEV_PAY")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_DIR_FEE")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("DIR_FEE")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_COMM")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("COMM")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_BNS")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("BNS")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_BACK_PAY")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("BACK_PAY")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_RETR_SCHM_PMNT")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RETR_SCHM_PMNT")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_SLRY_TAX_EMPYR")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("SLRY_TAX_EMPYR")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_EDUC_BNF")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("EDUC_BNF")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_SHR_OPT_GAIN")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("SHR_OPT_GAIN")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_NATURE1")), 35)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_PRD1")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RWD_AMT1")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_NATURE2")), 35)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_PRD2")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RWD_AMT2")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_NATURE3")), 35)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RWD_PRD3")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RWD_AMT3")), 9)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_PNSN")), 19)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("PNSN")), 9)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("TOT_INCOME")), 9)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_IND")), 1)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_ADDR_1")), 110)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_NATURE_1")), 19)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_R_1")), 26)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_1")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYE_1")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_RFND_EMPYE_1")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_EMPYE_1")), 7)

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_ADDR_2")), 110)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("R_NATURE_2")), 19)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("PRD_R_2")), 26)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_2")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYE_2")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_RFND_EMPYE_2")), 7)
                sBuffer = sBuffer & FillStringWithZero(Null2Str(gReader("RENT_EMPYR_EMPYE_2")), 7)


                If gReader("OSEA_AMT").Equals(DBNull.Value) And gReader("OSEA_ADDR").Equals(DBNull.Value) And gReader("OSEA_NM").Equals(DBNull.Value) Then
                    sBuffer = sBuffer & "0"
                Else
                    sBuffer = sBuffer & "1"
                End If

                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("OSEA_AMT")), 20)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("OSEA_NM")), 60)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("OSEA_ADDR")), 60)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("EMPYE_TAX_FL_NO")), 13)
                sBuffer = sBuffer & FillStringWithSpaceRight(Null2Str(gReader("RMK")), 60)

                oTextStream.WriteLine(sBuffer)
                'rsRv.MoveNext()
            Loop
            gReader.Close()

            'End of file
            oTextStream.Write(Chr(26))

            oTextStream.Close()

            oSQL.ReSet_Renamed()
            oSQL.SqlType = ClsMySQL.StatmentType.TYPE_INSERT
            oSQL.AddTable("TBL_APCA_AUD_LOG")

            oSQL.AddField("USR")
            oSQL.AddValue(sUserID)

            oSQL.AddField("ACT")
            oSQL.AddValue("S")

            oSQL.AddField("LOG_TM")
            oSQL.AddValue(VB6.Format(Today, "dd MMM YYYY") & " " & TimeOfDay)

            oSQL.AddField("DESC")

            sMsg = FormatMsg(My.Resources.str19011, CStr(iTaxYr), oFileSys.GetAbsolutePathName(sFileName))
            oSQL.AddValue(sMsg)
            'OpenRs(oSQL.SQL)

            Call ExeNonQuery(gConAPCA, oSQL.SQL)


            ShowInfo(sMsg)


            '直接保存成文件即可
            'xmlDoc.save(sFileName)

            '调用IE浏览器打开xml文件
            ShellExecute(Me.Handle.ToInt32, "explore", oFileSys.GetParentFolderName(sFileName) & vbNullChar, "", "", modShell.enuShowWindow.SW_SHOW)

            oTextStream = Nothing
            oFileSys = Nothing
            'rsRv = Nothing
            oSQL = Nothing
        End Using

        Exit Sub
erhd:
        oTextStream = Nothing
        oFileSys = Nothing
        'rsRv = Nothing
        oSQL = Nothing
        MyErrorRaise(Err.Description)
    End Sub

 

你可能感兴趣的:(xml)