Foxtable(狐表)用户栏目专家坐堂 → 生成 XML 代码报错、再求教


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

主题:生成 XML 代码报错、再求教

帅哥哟,离线,有人找我吗?
lanbor
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:433 积分:4351 威望:0 精华:0 注册:2017/3/20 21:08:00
生成 XML 代码报错、再求教  发帖心情 Post By:2020/4/27 18:46:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:生成xml语句报错.png
图片点击可在新窗口打开查看

生成 XML 代码报错、再求教 !
所有代码如下:
Dim txt7 As WinForm.TextBox = e.Form.Controls("TextBox8")
Dim i0 As Integer = 0
For Each dr1 As Row In Tables(e.Form.name & "_Table1").GetCheckedRows
    i0+=1
Next
If i0 = 0 Then
    messagebox.show("请至少选择一份送货单","提示!")
    Return
End If
Dim dr As Row= Tables(e.Form.name & "_Table1").Current
Dim jo As New Foxtable.XObject
Dim s1 As String = "XThirdParty"
Dim s2 As String = "PURCHASE_ARRIVAL.I01"
Dim ja As New JArray
Dim ja1 As New JArray
Dim ja2 As New JArray
Dim ja3 As New JArray
jo("request")= New JObject
jo("request")("@type")= "sync"
jo("request")("@key")= "e3839305c3fc25529335d489247d0f21"
jo("request")("host")= New JObject
jo("request")("host")("@prod")= "XThirdParty"
jo("request")("host")("@ver")= "1.0"
jo("request")("host")("@id")= ""
jo("request")("host")("@lang")= "zh_CN"
jo("request")("host")("@timestamp")= "20170426161604037"
jo("request")("host")("@acct")= "db_nsyt"
jo("request")("service") = New JObject
jo("request")("service")("@prod")="E10"
jo("request")("service")("@name")="PURCHASE_ARRIVAL.ImportData"
jo("request")("service")("@ip")="192.168.1.2"
jo("request")("service")("@id")="demo"
jo("request")("payload")= New Jobject
jo("request")("payload")("param")= New JObject
jo("request")("payload")("param")("@key")="std_data"
jo("request")("payload")("param")("@type")="xml"
jo("request")("payload")("param")("data_request")= New JObject
jo("request")("payload")("param")("data_request")("datainfo")= New JObject
jo("request")("payload")("param")("data_request")("datainfo")("parameter")= New JObject
jo("request")("payload")("param")("data_request")("datainfo")("parameter")= ja
For i As Integer = 1 To 2
    Dim so As New JObject
    If i=1 Then
        so("@key")="productName"    '这个结果参数没出现在 XML语句中
        so("@type")="string"              '这个结果参数没出现在 XML语句中
        so("#text")= s1                                   '这人有值
    Else
        so("@key")="templateName"    '这个结果参数没出现在 XML语句中
        so("@type")="string"              '这个结果参数没出现在 XML语句中
        so("#text")= s2                                   '这人有值
    End If
    ja.add(so)
Next
jo("request")("payload")("param")("data_request")("datainfo")("data")=  New JObject
jo("request")("payload")("param")("data_request")("datainfo")("data")("@name")="PURCHASE_ARRIVAL"
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")=  New JObject
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("@seq")=Cstr(dr("SequenceNumber"))
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("field")= New JObject
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("field")= ja1
Dim s71 As String = dr("EdiDate")
Dim s7 As String=s71.substring(0,4) & s71.substring(5,2) & s71.substring(8,2)
For i1 As Integer = 1 To 4
    Dim so As New JObject
    Select Case i1
        Case 1
            so("@name")="DOC_CODE"     '到货单性质码
            so("@type")="string"
            so("#text")= Cstr(dr("DOC_TYPE"))
        Case 2
            so("@name")="SUPPLIER_CODE"    '供应商编码
            so("@type")="string"
            so("#text")= Cstr(dr("SUPPLIER_CODE"))
        Case 3
            so("@name")="DOC_DATE"    '送货日期
            so("@type")="string"
            so("#text")= s7 'dr("EdiDate")
        Case 4
            so("@name")="SUPPLIER_ORDER_NO"    '送货单号
            so("@type")="string"
            so("#text")= Cstr(dr("SUPPLIER_ORDER_NO"))
    End Select
    ja1.add(so)
Next
'Dim 变量名 As WinForm.Table = e.Form.Controls("Table1")
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")= New JObject
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")("@name")="PURCHASE_ARRIVAL_D"
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")("row")= New JObject
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")("row")= ja2
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")("row")("fieldz") =  New JObject   ‘就在这里报错
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")("row")("fieldz") = ja3
For Each dr1 As Row In Tables(e.Form.name & "_Table1").GetCheckedRows
    Dim so2 As New JObject
    so2("@seq")= Cstr(dr1("SequenceNumber"))     '供应商的送货单行号
    ja2.add(so2)
    For i3 As Integer = 1 To 1    ’这里有故意取一个字段来看还是报错,不明白为什么!
        Dim so3 As New JObject
        Select Case i3
            Case 1
                so3("@name")="SequenceNumber"     '供应商的送货单行号
                so3("@type")="numeric"
                so3("#text")= dr1("SequenceNumber")
            Case 2
                so3("@name")="PO_DOC_NO"           '采购订单单号
                so3("@type")="string"
                so3("#text")= Cstr(dr("PO_DOC_NO"))
            Case 3
                so3("@name")="SEQ"                 '采购订单序号
                so3("@type")="numeric"
                so3("#text")= Cstr(dr1("SEQ"))
            Case 4
                so3("@name")="SUB_SEQ"                 '采购订单子序号(收货信息顺序号)
                so3("@type")="numeric"
                so3("#text")= Cstr(dr1("SUB_SEQ"))
            Case 5
                so3("@name")="ITEM_CODE"                 '采购订单子序号(收货信息顺序号)
                so3("@type")="string"
                so3("#text")= Cstr(dr1("ITEM_CODE"))
            Case 6
                so3("@name")="BUSINESS_QTY"                 '收货数量
                so3("@type")="numeric"
                so3("#text")= Cstr(dr1("BUSINESS_QTY"))
        End Select
        ja3.add(so3)
    Next
Next
txt7.text=jo.ToXML
请教专家再指点,哪里出错了!
感谢!
[此贴子已经被作者于2020/4/27 18:50:29编辑过]

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


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/27 20:39:00 [只看该作者]

jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")("row")= ja2  ‘ja2是一个数组,我也不知道怎么改,因为不知道您要什么逻辑
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")("row")("fieldz") =  New JObject   ‘就在这里报错


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


加好友 发短信
等级:一尾狐 帖子:433 积分:4351 威望:0 精华:0 注册:2017/3/20 21:08:00
XML 代码生成报错请教,我最终是希望生成生成以下代码  发帖心情 Post By:2020/4/28 8:25:00 [只看该作者]

我最终是希望生成生成以下XML代码段;
最终目的是:在我开发移动电子EDI送货单中构建一段 ERP 系统能识别的 XML 专用代码,
再抛送给ERP系统专用数据接口,然后 ERP 数据接口功能将我的 XML 代码自动转成一张 ERP 到货业务单据。

<request type="sync" key="e3839305c3fc25529335d489247d0f21">
<host prod="XThirdParty" ver="1.0" ip="127.0.0.1" id="" lang="zh_CN" timestamp="20170426161614037" acct="db_nsyt" />
<service prod="E10" name="PURCHASE_ARRIVAL.ImportData" ip="192.168.1.2" id="demo" />
<payload>
<param key="std_data" type="xml">
<data_request>
<datainfo>
<parameter key="productName" type="string">XThirdParty</parameter>
<parameter key="templateName" type="string">PURCHASE_ARRIVAL.I01</parameter>
<parameter key="importData" type="data">
<data name="PURCHASE_ARRIVAL">
<row seq="1">
    <field name="DOC_CODE" type="string">A360</field>
<field name="SUPPLIER_CODE" type="string">M-XC-0084</field>   ‘供应商代码
<field name="DOC_DATE" type="date">20200424</field>               ’送货日期
<field name="SUPPLIER_ORDER_NO" type="string">SY2004150001</field>   ‘送货单编号
<detail name="PURCHASE_ARRIVAL_D">
                                                                      '------------------------以下是循环组成送货单行记录开始
<row seq="1">
<field name="SequenceNumber" type="numeric">1</field>                        ’送货单序号
<field name="PO_DOC_NO" type="string">A350-202004150001</field>      ‘采购单号
<field name="SEQ" type="numeric">1</field>                                            ’采购单行号
<field name="SUB_SEQ" type="numeric">1</field>                                    ‘收货单行号
<field name="ITEM_CODE" type="string">B202-0082-0001</field>              ’材料品号
<field name="BUSINESS_QTY" type="numeric">101</field>                        ‘送货数量
</row>
<row seq="2">
    <field name="SequenceNumber" type="string">2</field>
<field name="PO_DOC_NO" type="string">A350-202004150001</field>
<field name="SEQ" type="numeric">2</field>
<field name="SUB_SEQ" type="numeric">1</field>
<field name="ITEM_CODE" type="string">B202-0082-0002</field>
<field name="BUSINESS_QTY" type="numeric">205</field>
</row>
                                                                      '------------------------以上是循环组成送货单行记录结束
</detail>
</row>
</data>
</parameter>
</datainfo>
</data_request>
</param>
</payload>
</request>
请求专家指点,感谢你!
[此贴子已经被作者于2020/4/28 8:35:31编辑过]

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


加好友 发短信
等级:超级版主 帖子:107739 积分:548028 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/28 9:34:00 [只看该作者]

jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")= New JObject
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")("@name")="PURCHASE_ARRIVAL_D"
jo("request")("payload")("param")("data_request")("datainfo")("data")("row")("detail")("row")= ja2
For Each dr1 As Row In Tables(e.Form.name & "_Table1").GetCheckedRows
    Dim so2 As New JObject
    so2("@seq")= Cstr(dr1("SequenceNumber"))     '供应商的送货单行号
so2("fieldz") = ja3
    ja2.add(so2)
    For i3 As Integer = 1 To 1    ’这里有故意取一个字段来看还是报错,不明白为什么!
        Dim so3 As New JObject
        Select Case i3
            Case 1
                so3("@name")="SequenceNumber"     '供应商的送货单行号
                so3("@type")="numeric"
                so3("#text")= dr1("SequenceNumber")
            Case 2

 回到顶部