Foxtable(狐表)用户栏目专家坐堂 → 关于XML的问题,初学,请发代码学习


  共有7644人关注过本帖树形打印复制链接

主题:关于XML的问题,初学,请发代码学习

帅哥哟,离线,有人找我吗?
有点甜
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/10 11:21:00 [只看该作者]

Dim str = "3100183130_19619734_0.xml"
Dim ary = str.split("_")
msgbox(ary(0))
msgbox(ary(1))

 回到顶部
帅哥哟,离线,有人找我吗?
hongye
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2019/3/10 11:42:00 [只看该作者]

Dim db1 As WinForm.DropDownBox = e.Form.Controls("DropBox1")
Dim db2 As WinForm.DropDownBox = e.Form.Controls("DropBox2")
Dim dzml1 As String = db1.text
Dim dzml2 As String = db2.text
For Each f As String In FileSys.GetFiles(dzml2)
    Dim txt As String = FileSys.ReadAllText(f, Encoding.utf8)
    Dim xmlDoc As New System.XML.XmlDocument
    xmlDoc.Loadxml(txt.Trim)
    Dim ndList  = xmlDoc.GetElementsByTagName("mxxx")
    For Each dr As object In ndlist
        Dim ndr As Row = Tables("表b").addnew
        For Each n As System.XML.XmlNode In dr.childNodes
            output.show(n.Name & " = " & n.InnerText)
            If n.name = "fpdm" Then
                ndr("fa piao代码") = n.innertext
            End If
            If n.name = "fphm" Then
                ndr("fa piao号码") = val(n.innertext)
            End If
            If n.name = "gmfnsrsbh" Then
                ndr("纳税人识别号") = val(n.innertext)
            End If
        Next
    Next
Next

错误,
.NET Framework 版本:2.0.50727.9035
Foxtable 版本:2018.10.9.1
错误所在事件:窗口,窗口1,Button1,Click
详细错误信息:
根级别上的数据无效。 行 1,位置 1。



 回到顶部
帅哥哟,离线,有人找我吗?
hongyefor
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:524 积分:3676 威望:0 精华:0 注册:2012/7/27 10:28:00
  发帖心情 Post By:2019/3/10 11:44:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:taxml_zzsfpkjmx_1_1_20190101_20190331_91310116560195731n_v10.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/10 12:21:00 [只看该作者]

代码没问题,我测试没问题。

 

只要你路径没写错,就不可能有问题。

 

你弹出msgbox(dzml2)、msgbox(f)的值看看


 回到顶部
帅哥哟,离线,有人找我吗?
hongyefor
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:524 积分:3676 威望:0 精华:0 注册:2012/7/27 10:28:00
  发帖心情 Post By:2019/3/11 12:32:00 [只看该作者]

Dim db1 As WinForm.DropDownBox = e.Form.Controls("DropBox1")
Dim db2 As WinForm.DropDownBox = e.Form.Controls("DropBox2")
Dim dzml1 As String = db1.text
Dim dzml2 As String = db2.text
For Each f As String In FileSys.GetFiles(dzml2)
    If f.EndsWith(".xml") Then
        Dim txt As String = FileSys.ReadAllText(f, Encoding.utf8)
        Dim xmlDoc As New System.XML.XmlDocument
        xmlDoc.Loadxml(txt.Trim)
        Dim ndList  = xmlDoc.GetElementsByTagName("mxxx")
        For Each dr As object In ndlist
            Dim ndr As Row = Tables("表b").addnew
            For Each n As System.XML.XmlNode In dr.childNodes
                output.show(n.Name & " = " & n.InnerText)
                If n.name = "fpdm" Then
                    ndr("fa piao代码") = n.innertext
                End If
                If n.name = "fphm" Then
                    ndr("fa piao号码") = n.innertext
                End If
                If n.name = "gmfnsrsbh" Then
                    ndr("纳税人识别号") = n.innertext
                End If
                If n.name = "kprq" Then
                    Dim str = n.innertext
                    ndr("开piao日期") = str.SubString(0,4) + "-" + str.SubString(4,2) + "-" + str.SubString(6,2)
                End If
                If n.name = "je" Then
                    ndr("合计金额")  = n.innertext
                End If
                If n.name = "se" Then
                    ndr("合计税额") = n.innertext
                End If
                If n.name = "zfbz" Then
                    ndr("fa piao状态") = n.innertext
                End If
                ndr("价税合计") = val(ndr("合计税额"))+ val(ndr("合计金额"))
               
            Next
        Next
    End If
Next

这样是可以了,但是如何检查是否重复的数据行呢?使其不加载呢

[此贴子已经被作者于2019/3/11 12:32:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/11 12:51:00 [只看该作者]

这个

 

Dim ndr As Row = Tables("表b").addnew

 

改成

 

Dim ndr As dataRow = dataTables("表b").find("某列='" & dr("fpdm") & "'")

If ndr is Nothing then ndr = dataTables("表b").addnew


 回到顶部
帅哥哟,离线,有人找我吗?
hongyefor
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:524 积分:3676 威望:0 精华:0 注册:2012/7/27 10:28:00
  发帖心情 Post By:2019/3/11 17:17:00 [只看该作者]

.NET Framework 版本:2.0.50727.8800
Foxtable 版本:2018.10.9.1
错误所在事件:窗口,窗口1,Button1,Click
详细错误信息:
没有为 字符串“fa piao代码 = '” 和 类型“XmlElement” 定义运算符“&”。

 

Dim db1 As WinForm.DropDownBox = e.Form.Controls("DropBox1")
Dim db2 As WinForm.DropDownBox = e.Form.Controls("DropBox2")
Dim dzml1 As String = db1.text
Dim dzml2 As String = db2.text
For Each f As String In FileSys.GetFiles(dzml2)
    If f.EndsWith(".xml") Then
        Dim txt As String = FileSys.ReadAllText(f, Encoding.utf8)
        Dim xmlDoc As New System.XML.XmlDocument
        xmlDoc.Loadxml(txt.Trim)
        Dim ndList  = xmlDoc.GetElementsByTagName("mxxx")
        For Each dr As object In ndlist
            Dim ndr As DataRow = DataTables("表b").find("fa piao代码 = '" & dr("fpdm") & "'And fa piao号码 = '" & dr("fphm") & "'")
            If ndr Is Nothing Then ndr = DataTables("表b").addnew
            For Each n As System.XML.XmlNode In dr.childNodes
                output.show(n.Name & " = " & n.InnerText)
                If n.name = "fpdm" Then
                    ndr("fa piao代码") = n.innertext
                End If
                If n.name = "fphm" Then
                    ndr("fa piao号码") = n.innertext
                End If
                If n.name = "gmfnsrsbh" Then
                    ndr("纳税人识别号") = n.innertext
                End If
                If n.name = "kprq" Then
                    Dim str = n.innertext
                    ndr("开piao日期") = str.SubString(0,4) + "-" + str.SubString(4,2) + "-" + str.SubString(6,2)
                End If
                If n.name = "je" Then
                    ndr("合计金额")  = n.innertext
                End If
                If n.name = "se" Then
                    ndr("合计税额") = n.innertext
                End If
                If n.name = "zfbz" Then
                    ndr("fa piao状态") = n.innertext
                End If
                ndr("价税合计") = val(ndr("合计税额"))+ val(ndr("合计金额"))
            Next
        Next
    End If
Next

 

怎么回事?

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/11 17:36:00 [只看该作者]

改成

 

Dim ndr As dataRow = dataTables("表b").find("某列='" & dr("fpdm").innertext & "'")

If ndr is Nothing then ndr = dataTables("表b").addnew


 回到顶部
帅哥哟,离线,有人找我吗?
hongyefor
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:524 积分:3676 威望:0 精华:0 注册:2012/7/27 10:28:00
  发帖心情 Post By:2019/3/11 20:04:00 [只看该作者]

{客户编码}[分隔符]"~~"
// 每行格式 :
// 编码~~名称~~简码~~税号~~地址电话~~银行账号~~邮件地址~~备注~~身份证校验

 

请问这个表达式怎么不起作用?

Dim db3 As WinForm.DropDownBox = e.Form.Controls("DropBox3")
Dim dzml3 As String = db3.text
For Each f As String In FileSys.GetFiles(dzml3)
    If f.EndsWith(".txt") Then
        Dim txt As String = FileSys.ReadAllText(f, Encoding.Default)
        Dim mg As New Merger
        mg.SourcePath = dzml3
        mg.Format = "Delimited,~~"
        Dim Parts() As String = f.Split(".txt")
        Dim fo As String = Parts(0)
        Dim fs() As String = fo.Split("\")
        mg.SourceTableName =  fs(1) '指定要合并的表
        msgbox(fs(1))
        mg.DataTableName = "表c" '指定接收数据的表
        mg.Merge() '开始合并
    End If
Next


 回到顶部
帅哥,在线噢!
有点蓝
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107023 积分:544346 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/3/11 20:23:00 [只看该作者]


 回到顶部
总数 51 上一页 1 2 3 4 5 6 下一页