/// <summary> /// Given the <paramref name="element" /> and the <paramref name="edmTable" /> and /// all of the records that satsify the <paramref name="filter" /> will be added as EDMPROP elements in the document /// from the table. /// </summary> /// <param name="element">IXMLDOMElement of the current xml document.</param> /// <param name="edmTable">The edm table.</param> /// <param name="filter">Filter used to narrow down the table search.</param> private void SetProperty(IXMLDOMElement element, EdmTable edmTable, string filter) { // Obtain all of the rows the satisfy the given filter. IEnumerable <DataRow> rows = this.GetRows(edmTable, filter); if (rows == null) { return; } // Iterate through all of the rows. foreach (DataRow row in rows) { EDM edm = new EDM(row); IXMLDOMElement edmprop = element.ownerDocument.createElement("EDMPROP"); edmprop.setAttribute("Name", edm.Name); edmprop.setAttribute("Type", edm.Type); edmprop.text = edm.Value; element.appendChild(edmprop); } }
public void AddAttribute(string newAttributeName, string Value, IXMLDOMElement Parent) { try { Parent.setAttribute(newAttributeName, Value); return; } catch { throw; } return; }
protected void btndataUp_Click(object sender, ImageClickEventArgs e) { try { string YSDH = this.txtYSDH.Text.Trim(); DataSet dsYSDH = PDParam.GetPDDNC("YSDH = '" + YSDH + "'"); if (dsYSDH != null && dsYSDH.Tables[0].Rows.Count > 0) { string DJZT = dsYSDH.Tables[0].Rows[0]["DJZT"].ToString(); if (DJZT != "已盘") { this.PrintfError("只有审核过的单据才能上传"); return; } } else { this.PrintfError("没有可导出的数据"); return; } string Fdownweb = Common.RFWEBSERVER; // RF服务器地址 string Fuploadweb = Common.NCWERBSERVER; //NC服务器地址 string wmsserver = Common.INTERFACESERVER; //接口地址 //string Fdownweb = "http://192.168.1.171/";//测试地址 //string Fuploadweb = "http://localhost:800/WebSiteXML/Default.aspx"; //string wmsserver = "http://192.168.1.171/"; if ((string.IsNullOrEmpty(Fdownweb)) || (string.IsNullOrEmpty(Fuploadweb))) { this.PrintfError("服务器尚未正确设置"); } else { XmlDocument docC = new XmlDocument(); string filename = YSDH + ".xml"; docC.Load(Fdownweb + filename); //用XmlDocument类来下载Xml文件 DOMDocument doc = new DOMDocument(); XmlDocument resultdoc = new XmlDocument(); string xml = docC.InnerXml; doc.loadXML(docC.InnerXml); //将Xml文件赋给DOMDocument类型的doc IXMLDOMElement rootnode = doc.documentElement; bool XmlIsSended = PDParam.XmlIsSended(filename); if (XmlIsSended) { rootnode.setAttribute("replace", "Y"); rootnode.setAttribute("proc", "update"); } else { rootnode.setAttribute("replace", "N"); rootnode.setAttribute("proc", "add"); } string ArrSender = rootnode.getAttribute("sender").ToString(); string Aroottag = rootnode.getAttribute("roottag").ToString(); string ArrReceiver = rootnode.getAttribute("receiver").ToString(); rootnode.setAttribute("sender", ArrReceiver); rootnode.setAttribute("receiver", ArrSender); DataSet dsNCDetail = PDParam.GetNCDetail(YSDH, ""); string WLH; string PCH; string SX; string vfree1; string vfree2; string vfree3; string SPSL; string SPZL; IXMLDOMNode node; foreach (DataRow dr in dsNCDetail.Tables[0].Rows) { WLH = dr["barcode"].ToString(); PCH = dr["PCH"].ToString(); SX = dr["SX"].ToString(); vfree1 = dr["vfree1"].ToString(); vfree2 = dr["vfree2"].ToString(); vfree3 = dr["vfree3"].ToString(); SPSL = dr["SPSL"].ToString(); SPZL = dr["SPZL"].ToString(); //修改实盘数量 node = rootnode.selectSingleNode(Aroottag + "/bill_body/item[cinventorycode/text()='" + WLH + "'][vbatchcode/text()='" + PCH + "'][cqualitylevelname/text()='" + SX + "'][vfree1/text()='" + vfree1 + "'][vfree2/text()='" + vfree2 + "'][vfree3/text()='" + vfree3 + "']/ncheckastnum"); if (node != null) { node.text = SPSL; } node = rootnode.selectSingleNode(Aroottag + "/bill_body/item[cinventorycode/text()='" + WLH + "'][vbatchcode/text()='" + PCH + "'][cqualitylevelname/text()='" + SX + "'][vfree1/text()='" + vfree1 + "'][vfree2/text()='" + vfree2 + "'][vfree3/text()='" + vfree3 + "']/nchecknum"); if (node != null) { node.text = SPZL; } } //上传 MSXML2.XMLHTTP MyHttp = new MSXML2.XMLHTTPClass(); MyHttp.open("post", Fuploadweb, false, "", ""); MyHttp.send(doc); int ComResult = 0; string Comdes = string.Empty; if (MyHttp.status == 200) { resultdoc.LoadXml(MyHttp.responseText); XmlElement resultRootnode = resultdoc.DocumentElement; string Roottag = resultRootnode.GetAttribute("roottag"); XmlNode resultnode = resultRootnode.SelectSingleNode(Roottag + "/resultcode"); if (resultnode != null) { ComResult = Convert.ToInt32(resultnode.InnerText.Trim()); } resultnode = resultRootnode.SelectSingleNode(Roottag + "/resultdescription"); if (resultnode != null) { Comdes = resultnode.InnerText.Trim(); } } string CKID = dsYSDH.Tables[0].Rows[0]["CK"].ToString(); PDParam.AddXmlLog(CKID, filename, YSDH, Comdes, ComResult); if (ComResult == 1) { this.PrintfError("传输成功"); } else { this.PrintfError("传输失败"); } string apppathxml = "../../webinfo/xml"; string pathName = Server.MapPath(apppathxml); if (!Directory.Exists(pathName)) { Directory.CreateDirectory(pathName); } doc.save(pathName + "/" + filename); SaveLocalXml(doc, Aroottag, YSDH); } } catch { this.PrintfError("上传出现错误,请确认服务器地址是否正确"); return; } }
public static string InsertProduct(DataTable dthead, DataTable dtbody) { U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = canshu.u8Login; //envContext.U8Login = u8Login; //第三步:设置API地址标识(Url) //当前API:添加新单据的地址标识为:U8API/MaterialOut/Add U8ApiAddress myApiAddress = new U8ApiAddress("U8API/ARClose/SaveVouch"); //第四步:构造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); //第五步:API参数赋值 ////给普通参数sVouchType赋值。此参数的数据类型为System.String,此参数按值传递,表示单据类型:11 //broker.AssignNormalValue("sVouchType", "11"); ////该参数VouchId为INOUT型普通参数。此参数的数据类型为System.String,此参数按值传递。在API调用返回时,可以通过GetResult("VouchId")获取其值 //string vouid = ""; //broker.AssignNormalValue("VouchId", vouid); ////该参数domMsg为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数 MSXML2.IXMLDOMDocument2 domMsg = new MSXML2.DOMDocumentClass(); broker.AssignNormalValue("domMsg", domMsg); ////给普通参数bCheck赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否控制可用量。 //broker.AssignNormalValue("bCheck", true); ////给普通参数bBeforCheckStock赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示检查可用量 //broker.AssignNormalValue("bBeforCheckStock", true); ////给普通参数bIsRedVouch赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否红字单据 //broker.AssignNormalValue("bIsRedVouch", false); ////给普通参数sAddedState赋值。此参数的数据类型为System.String,此参数按值传递,表示传空字符串 //string sadd = ""; //broker.AssignNormalValue("sAddedState", sadd); ////给普通参数bReMote赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否远程:转入false //broker.AssignNormalValue("bReMote", false); //打开adodb连接 Connection oCon = new ConnectionClass(); oCon.Open(envContext.U8Login.UfDbName); MSXML2.IXMLDOMDocument2 domhead = new DOMDocument(); MSXML2.IXMLDOMDocument2 dombody = new DOMDocument(); //表头赋值 //表头DOM赋值 string sqlt = "select cast(null as nvarchar(2)) as editprop,* from AR_CloseR where 1=2 "; Recordset rs = new Recordset(); rs.Open(sqlt, oCon, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockReadOnly); rs.Save(domhead, PersistFormatEnum.adPersistXML); //插入表头信息 IXMLDOMElement eleHead = (IXMLDOMElement)domhead.selectSingleNode("//rs:data"); IXMLDOMElement ele = (IXMLDOMElement)domhead.createElement("z:row"); eleHead.appendChild(ele); try { ele.setAttribute("editprop", "A");//A代表增加,M代表修改 ele.setAttribute("dVouchDate", DateTime.Now.ToShortDateString()); ele.setAttribute("cdwcode", "0999"); //ele.setAttribute("id", rdid); ele.setAttribute("ccode", "100"); ele.setAttribute("VT_ID", "65"); ele.setAttribute("ddate", DateTime.Now.ToShortDateString()); //出库日期 ele.setAttribute("dnmaketime", DateTime.Now.ToString()); //制单日期 ele.setAttribute("cmemo", "下料生成"); //备注 ele.setAttribute("cmaker", canshu.u8Login.cUserName); //制单人 broker.AssignNormalValue("DomHead", domhead); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误发生", MessageBoxButtons.OK, MessageBoxIcon.Error); return("0"); } //表体赋值 string sqlw = "select cast(null as nvarchar(2)) as editprop,* from recordoutsq where 1=2 "; //Recordset rs = new Recordset(); rs.Close(); rs.Open(sqlw, oCon, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockReadOnly); rs.Save(dombody, PersistFormatEnum.adPersistXML); //插入表体尾信息 //dombody.rowcount = IXMLDOMElement eleBody = (IXMLDOMElement)dombody.selectSingleNode("//rs:data"); for (int i = 0; i < dtbody.Rows.Count; i++) { ele = (IXMLDOMElement)dombody.createElement("z:row"); eleBody.appendChild(ele); // 表尾赋值 //string cinvcode = "01019002063"; //int autoid = 1000; //decimal sl = 4m; try { ele.setAttribute("editprop", "A"); //ele.setAttribute("autoid", autoid); ele.setAttribute("cinvcode", DbHelper.GetDbString(dtbody.Rows[i]["存货编码"])); if (string.IsNullOrEmpty(DbHelper.GetDbString(dtbody.Rows[i]["lotno"])) != true) { ele.setAttribute("cBatch", DbHelper.GetDbString(dtbody.Rows[i]["lotno"])); } ele.setAttribute("iquantity", DbHelper.GetDbString(dtbody.Rows[i]["本次下料"])); //MessageBox.Show(dtbody.Rows[i]["本次下料"].ToString()); ele.setAttribute("iMPoIds", DbHelper.GetDbInt(dtbody.Rows[i]["allocateid"])); ele.setAttribute("cmocode", DbHelper.GetDbString(dthead.Rows[0]["染料单号"])); ele.setAttribute("inquantity", DbHelper.GetDbdecimal(dtbody.Rows[i]["未下数量"])); //未下应下数量 //生产订单信息 ele.setAttribute("invcode", DbHelper.GetDbString(dthead.Rows[0]["色号"])); ele.setAttribute("imoseq", DbHelper.GetDbString(dthead.Rows[0]["sortseq"])); ele.setAttribute("iopseq", DbHelper.GetDbString(dtbody.Rows[i]["opseq"])); ele.setAttribute("copdesc", DbHelper.GetDbString(dtbody.Rows[i]["工序"])); ele.setAttribute("iExpiratDateCalcu", 0); ele.setAttribute("irowno", i + 1); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误发生", MessageBoxButtons.OK, MessageBoxIcon.Error); return("0"); } } broker.AssignNormalValue("DomBody", dombody); //测试结果 //domhead.save(@"d:\2xml"); //dombody.save(@"d:\3.xm.l"); //第六步:调用API if (!broker.Invoke()) { //错误处理 Exception apiEx = broker.GetException(); if (apiEx != null) { if (apiEx is MomSysException) { MomSysException sysEx = apiEx as MomSysException; MessageBox.Show("系统异常:" + sysEx.Message); //todo:异常处理 } else if (apiEx is MomBizException) { MomBizException bizEx = apiEx as MomBizException; MessageBox.Show("API异常:" + bizEx.Message); //todo:异常处理 } //异常原因 String exReason = broker.GetExceptionString(); if (exReason.Length != 0) { MessageBox.Show("异常原因:" + exReason); } } //结束本次调用,释放API资源 broker.Release(); return("0"); } //第七步:获取返回结果 //获取返回值 //获取普通返回值。此返回值数据类型为System.Boolean,此参数按值传递,表示返回值:true:成功,false:失败 System.Boolean result = Convert.ToBoolean(broker.GetReturnValue()); if (result == false) { //获取普通OUT参数errMsg。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空 System.String errMsgRet = broker.GetResult("errMsg") as System.String; if (errMsgRet != null) { MessageBox.Show(errMsgRet.ToString(), "错误提示1!"); } return("2"); //MessageBox.Show(result.ToString(), "导入成功提示"); } ////获取out/inout参数值 ////获取普通OUT参数errMsg。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空 //System.String errMsgRet = broker.GetResult("errMsg") as System.String; //if (errMsgRet != null) // MessageBox.Show(errMsgRet.ToString(), "错误提示1!"); ////获取普通INOUT参数VouchId。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空 System.String VouchIdRet = broker.GetResult("VouchId") as System.String; ////获取普通OUT参数domMsg。此返回值数据类型为MSXML2.IXMLDOMDocument2,在使用该参数之前,请判断是否为空 //MSXML2.IXMLDOMDocument2 domMsgRet = (broker.GetResult("domMsg")) as MSXML2.IXMLDOMDocument2; //if (domMsgRet != null) // MessageBox.Show(domMsgRet.ToString(), "错误提示2!"); //结束本次调用,释放API资源 broker.Release(); return(VouchIdRet); }