我用的是delphi 2007 update3
各位大大,我在写了个服务程序和客户程序,客户程序是发送由DBExpress生成的XML字符串,服务程序是接收XML字符串并用 
cds.xmldata:=xmlstr; 
这句生成一个tclientdataset的数据集,我在发送程序使用发如下代码是成功的: 
function Tfrm_main.FaxUVSMGET_TextMessage():boolean; 
var 
str:string; 
cds:tclientdataset; 
begin 
  cds:=TClientDataSet.Create(self); 
  str:=Create_GetTxtMessage('','未发送'); 
  str:=FaxUVSMServer_SendCommand(str); //这里取得了由服务程序发过来的XML字符串 
  if trim(str) <> '' then begin 
  cds.XMLData:=str; 
  cds.Open; 
  cds.First; 
  while cds.Eof = false do begin 
    。。    
    cds.Next; 
  end; 
  cds.Close; 
  end; 
  cds.Free; 
end; 
在服务程序使用如下代码怎么也不成功,代码如下: 
      cds:=TClientDataSet.Create(nil); 
    cds.XMLData:=DataRow; 
    cds.Open; 
我调试也一下,XML的格式两个程序是一致的,并且我将TClientDataset放在一个窗体上,手工装入调试时保存的XML内容也没有问题,现在都晕了,对了这两段代码成功的是在客户的窗体pas文件中,失败的是一个服务程序中调用的一个单独的pas文件,我不知道是不是这个有影响,在网上查了一天,什么结果也没有,大家帮帮我呀???? 
先谢谢大大们了
下面是XML的格式,但客户程序是正常的
<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS><FIELD attrname="COMID" fieldtype="fixedFMT" required="true" WIDTH="18"/><FIELD attrname="COMNAME" fieldtype="string" WIDTH="50"/><FIELD attrname="SALECODE" fieldtype="string" WIDTH="30"/><FIELD attrname="SPECS" fieldtype="string" WIDTH="50"/><FIELD attrname="COMTYPE" fieldtype="string" WIDTH="20"/><FIELD attrname="UNIT" fieldtype="string" WIDTH="20"/><FIELD attrname="ISPIECE" fieldtype="string" WIDTH="10"/><FIELD attrname="SALEPRICE" fieldtype="fixedFMT" DECIMALS="2" WIDTH="15"/><FIELD attrname="VIPPRICE" fieldtype="fixedFMT" DECIMALS="2" WIDTH="15"/><FIELD attrname="LASTINPRICE" fieldtype="fixedFMT" DECIMALS="4" WIDTH="15"/><FIELD attrname="STATUS" fieldtype="string" required="true" WIDTH="10"/><FIELD attrname="PYCODE" fieldtype="string" WIDTH="50"/><FIELD attrname="EDITTIME" fieldtype="SQLdateTime"/><FIELD attrname="STOCKTYPE" fieldtype="string" WIDTH="10"/></FIELDS><PARAMS LCID="0"/></METADATA><ROWDATA><ROW COMID="9" COMNAME="嘉胜清螨灵男士洁面乳100g" SALECODE="6920689851844" SPECS="100g" COMTYPE="非食品" UNIT="瓶" ISPIECE="计件" SALEPRICE="30.50" VIPPRICE="30.50" LASTINPRICE="30.5000" STATUS="正常" PYCODE="JWSQLMXSJJMQ100g" EDITTIME="20080831T19:30:59000" STOCKTYPE="管理库存"/></ROWDATA></DATAPACKET>

解决方案 »

  1.   

    通讯我的用remobjects啊,在remobjects架构以下能不能给我个据体点的作法?
      

  2.   

    我今天也遇到类似的问题,并搜索到了这里,后来还是自己解决了.问题就是原始数据出现了当前服务器不支持的非法字符,但是又不可见,我把那一单元格数据拿到查询分析器(类似记事本,有格式化的作用),重新更新了单元格的数据就可以了.
    我觉得出现你这里提的问题是在下面这一句将导入的xmlstr打开cds.open;可能是xmlstr字符串出问题了,原因可能就在于某些数据出现不可见而且不支持你的服务器端配置的字符,
    你可以把数据量缩小,把列缩少,进一步调试来发现, 就是把xmlstr压缩来调.祝你好运.
      

  3.   

    感谢楼上的回复,在我吐过一盆子血后,终于发现了这个问题的原因,是我在生成XML文本时,将所有的XML标记转为大写了
    后台在网上看关于XML的一个手册,发现XML是区别大小写的,这才知道自已错在那里,呵呵,这问题搞了我三天啊,楼上的如果还回来就加我QQ:810002257,交个朋友!8888