我用的是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>
各位大大,我在写了个服务程序和客户程序,客户程序是发送由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>
我觉得出现你这里提的问题是在下面这一句将导入的xmlstr打开cds.open;可能是xmlstr字符串出问题了,原因可能就在于某些数据出现不可见而且不支持你的服务器端配置的字符,
你可以把数据量缩小,把列缩少,进一步调试来发现, 就是把xmlstr压缩来调.祝你好运.
后台在网上看关于XML的一个手册,发现XML是区别大小写的,这才知道自已错在那里,呵呵,这问题搞了我三天啊,楼上的如果还回来就加我QQ:810002257,交个朋友!8888