以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  XML多次循环查找并给表赋值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102925)

--  作者:huhu
--  发布时间:2017/6/27 18:12:00
--  XML多次循环查找并给表赋值
这是对方的XML
<?xml version="1.0" encoding="utf-8"?>
<ufinterface efdebug="0" efserverid="321" eftype="EFSQL" ddate="2016-10-08" sqlstr="s elect * from Rdrecord32 where dnmaketime &gt;  \'2017-04-26\' and dnmaketime &lt; \'2017-04-27\' " proc="Query" succeed="1" dsc="EFSQL处理成功">
  <voucher cardnumber="EFSQL" ccardname="" xmlns:z="EF">
    <head>
      <z:row xmlns:z="#RowsetSchema" AutoID="1003699447" ID="1000729735" cInvCode="CBNNN-JHJ0005A" iQuantity="10.0000000000" iFlag="0" cDefine23="2017-04-26T00:00:00" cDefine25="同博达" iDLsID="1000341212" iNQuantity="10.0000000000" strC strCode="030702CBNNN-JHJ0005A" bLPUseFree="False" iRSRowNO="0" iOriTrackID="0" bCosting="True" bVMIUsed="False" cbdlcode="KJ1704C87" corufts="" strC iExpiratDateCalcu="0" iorderdid="1000161766" iordertype="1" iordercode="0117040E4" iorderseq="1" ipesodid="1000161766" ipesotype="1" cpesocode="0117040E4" ipesoseq="1" isotype="0" irowno="1" rowufts="0000000281bd4607" />
    </head>
    <body />
  </voucher>
</ufinterface>
我有2个时间控件。想通过选择起始时间start和截止时间ed。dnmaketime &gt;  \'2017-04-26\' and dnmaketime &lt; \'2017-04-27\'。
Dim start As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim Ed As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker2")

然后解析XML。对应的值填写到销售出库单。sqlstr应该是查2个表rdrecord32和rdrecords32.当在rdrecord32查到id和rdrecords32的id相等。如附件图。
那么销售出库单就需要新增加1行,csocode,cInvCode,ccusinvname,iQuantity从rdrecords32获取值。
对应关系
字段名
cMaker制单人rdrecord32
cWhCode仓库编码rdrecord32
仓库
csocode销售订单号rdrecords32
cBusCode发货单号rdrecord32
dDate 出库日期rdrecord32
cCode出库单号rdrecord32
出库类别
cDefine2销售部门rdrecord32
业务员
cDefine10客户名称rdrecord32
cMemo备注rdrecord32
cInvCode存货编码rdrecords32
ccusinvname存货名称rdrecords32
主计量单位
iQuantity数量rdrecords32
cDefine12货运单号rdrecord32
cShipAddress发货地址rdrecord32

这个怎么做呢?

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:xml2017.rar


此主题相关图片如下:qq1.png
按此在新窗口浏览图片

[此贴子已经被作者于2017/6/27 18:13:50编辑过]

--  作者:有点色
--  发布时间:2017/6/27 18:38:00
--  

 之前告诉过你怎么操作xml,请自行补充知识

 

https://www.baidu.com/baidu?wd=xmldocument&tn=monline_dg&ie=utf-8

 

 


--  作者:huhu
--  发布时间:2017/6/28 9:20:00
--  
单独解析一个XML没有问题----这个之前告诉我了。
现在是有2个问题困扰我。
1.起始start和截止ed控件的值如何传递到sqlstr里?

sqlstr="s elect * from Rdrecord32 where dnmaketime &gt;  \'2017-04-26\' and dnmaketime &lt; \'2017-04-27\'
dnmaketime &gt;  \'2017-04-26\' 为dnmaketime &gt; start.value
dnmaketime &lt; \'2017-04-27\' 为dnmaketime &lt;  ed.value。

2.在Rdrecord32表解析出ID,还要在Rdrecords32在查询一次。这个怎么做?




--  作者:有点色
--  发布时间:2017/6/28 10:14:00
--  

1、

 

Dim xmlDoc  As New System.Xml.XmlDocument
xmlDoc.LoadXml("<?xml version=""1.0"" encoding=""utf-8""?><iDLabelInfo>    <ProductName>LUNAR FLYKNIT 3 iD</ProductName>    <Sizes>        <sz SizeCode=""12.5"" SizeType=""us"" />        <sz SizeCode=""11"" SizeType=""uk"" />    </Sizes>    <MainColorway>Black Heather/Volt/white</MainColorway>    <DesignedBy>Hiroyuki Sugiyama</DesignedBy>    <ImageURL>ttp://origin-nikeid.nike.com//services/imgredirect/mtr-802081658/bgc-na/wid-574/vw-9</ImageURL>    <WorkOrderNumber>W00001</WorkOrderNumber></iDLabelInfo>")

Dim ndList  = xmlDoc.GetElementsByTagName("sz")

For i As Integer = 0 To ndList.count - 1
    If ndlist(i).Attributes IsNot Nothing Then
        For Each xa As Xml.XmlAttribute In ndlist(i).Attributes
            Output.Show(xa.Name & "=" & xa.Value)
        Next
    End  If
Next


--  作者:有点色
--  发布时间:2017/6/28 10:19:00
--  

2、没看懂你什么问题,如何查询Rdrecords32?

 

    解析出id后,你想怎么查就怎么查啊。


--  作者:huhu
--  发布时间:2017/6/28 15:36:00
--  
老师,我没看懂4楼代码,哪里和时间时间控件有关系。还有XML是我提供的那个吗?
附件是我根据之前的帖子,有2个按钮,1查询,2解析。请帮忙看看怎么改。

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



--  作者:有点色
--  发布时间:2017/6/28 16:05:00
--  

 如果是查找,你要传递什么参数过去查找?对方的文档如何说明?

 

 如果是获取值,参考

 

Dim xmlDoc As New System.XML.XmlDocument
xmlDoc.Load("d:\\test.xml")
Dim ndList  = xmlDoc.GetElementsByTagName("ufinterface")
For i As Integer = 0 To ndList.count - 1
    msgbox(ndlist(i).Attributes("sqlstr").value)
Next


--  作者:huhu
--  发布时间:2017/6/28 16:15:00
--  
<?xml version="1.0" encoding="utf-8"?>
<ufinterface efdebug="0" efserverid="321" eftype="EFSQL" ddate="2016-10-08" sqlstr="se lect * from Rdrecord32 where dnmaketime &gt;  \'2017-04-26\' and dnmaketime &lt; \'2017-04-27\' " proc="Query" succeed="1" dsc="EFSQL处理成功">  
</ufinterface>

xml就是上面这个。dnmaketime大于起始时间小于截止时间。

把xml的内容复制到context里面。点击调用就返回了结果。


图片点击可在新窗口打开查看此主题相关图片如下:222.png
图片点击可在新窗口打开查看



--  作者:有点色
--  发布时间:2017/6/28 16:26:00
--  

 那你就不能合成字符串?合成字符串之后查询?

 

Dim msg As String = "context=" & 这里写你合成的字符串
output.show(msg)
Dim req = System.Net.WebRequest.Create("http://192.168.1.83/EFWebS/EFWebService.asmx/U8WebXML")

[此贴子已经被作者于2017/6/28 16:26:24编辑过]