起步软件技术论坛-X3

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: huixiangtao

【结贴】请问Delphi7中的控件在x3_3002中可以使用不?**

[复制链接]
 楼主| 发表于 2008-4-28 20:17:00 | 显示全部楼层
代码前加
Borland.Delphi.ActiveX.CoInitialize(nil);就行
但是运行到rootNode:=xmlDoc.DocumentElement; // 这儿出错,如何办?  
procedure TBJJKGNTCPFS.xmlMsg2DB(xmlData:String);
var
  xmlDoc:TXMLDocument;
  rootNode,curNode:IXMLNode;
  i:Integer;
  s:String;
begin
    Borland.Delphi.ActiveX.CoInitialize(nil);
    xmlDoc:= TXMLDocument.Create(nil);//delphi
    //xmlDoc:= TXMLDocument.Create(Self);
    xmlDoc.LoadFromXML(xmlData);//
    xmlDoc.Active:=true;
    rootNode:=xmlDoc.DocumentElement; // 这儿出错    curNode:=rootNode.ChildNodes.FindNode('alarmItem');
    try

xmlerror_point.jpg

21.72 KB, 下载次数: 130

回复 支持 反对

使用道具 举报

发表于 2008-4-29 08:39:48 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-29 15:18:32 | 显示全部楼层

插入数据时程序就停了,但是不出异常,也不出错?

谢谢,xml部分好了。但是插入数据库时出错。弄了很长时间也没有找到原因,请帮下忙。
程序主要如下,
procedure TBJJKGNTCPFS.xmlMsg2DB(xmlData:String);
var
// xmlDoc:TXMLDocument;
  xmlDoc:IXMLDOMDocument;
  rootNode,curNode:IXMLDOMNode;
  i:Integer;
  s:String;
begin
    Borland.Delphi.ActiveX.CoInitialize(nil);
  if not dsb_Alarm.DataSet.Active then
    begin
    dsb_Alarm.DataSet.Open;
  end;
   dsb_Alarm.DataSet.First;
   xmlDoc:= ComObj.CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument;
    //xmlDoc.LoadFromXML(xmlData);// delphi
    xmlDoc.loadXML(xmlData);

   rootNode:=xmlDoc.DocumentElement as IXMLDOMNode;
   curNode:=xmlDoc.DocumentElement.getElementsByTagName('alarmItem').item[0];
    try
      if curNode <> nil then
     begin
         dsb_Alarm.DataSet.Insert; //程序运行到这儿就没有反应了,也不出错,也不停止,也没有异常
         for i :=0  to curNode.ChildNodes.Get_length -1 do
          begin
           s:=s+curNode.ChildNodes.Get_text+',';
           dsb_Alarm.DataSet.FieldByName(curNode.ChildNodes.Get_baseName).AsString:=curNode.ChildNodes.get_text;
           end;
          dsb_Alarm.DataSet.ApplyUpdates;
          edtXmlData.Text:=s;
          dsb_Alarm.DataSet.Refresh;
          DataGrid1.Refresh;
     end;
    except
       on e:exception do
        jsDialogs.ShowMsg(e.Message,'Xml-->DataBase Failed!');
    end;
end;
我写了一个测试数据库的代码,如下,但是却可正确插入数据的,
procedure TBJJKGNTCPFS.Button1Click(Sender: TObject);
begin
     dsb_Alarm.DataSet.First;
     dsb_Alarm.DataSet.Insert;
     dsb_Alarm.dataset.FieldByName('F_Alarm_ID').AsString:='ID_0001';
     dsb_Alarm.dataset.FieldByName('F_Device_ID').AsString:='Device_0001';
     dsb_Alarm.DataSet.ApplyUpdates;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-29 15:48:45 | 显示全部楼层

我的xml数据。

调用
procedure TBJJKGNTCPFS.xmlMsg2DB(xmlData:String);
参数xmlData数据如下:
<?xml version="1.0" encoding="gb2312"?>
<hirisun-alarms>
<alarmItem>
<F_Device_ID>sb_001</F_Device_ID>
<F_Alarm_Type>1</F_Alarm_Type>
<F_Alarm_Info>温度高</F_Alarm_Info>
</alarmItem>
</hirisun-alarms>
回复 支持 反对

使用道具 举报

发表于 2008-4-29 16:04:45 | 显示全部楼层
是否在dsb_Alarm上做过什么代码处理?

楼主可以把它复制出来,粘贴到论坛上。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-29 16:37:40 | 显示全部楼层

dsb_Alarm上没有做什么处理呀,

dsb_Alarm上没有做什么处理呀,同一个Unit下,我用Button1就可以插入数据库。但是xmlMsg2DB就是不行。
     begin
         dsb_Alarm.DataSet.Insert; //程序运行到这儿就没有反应了,也不出错,也不停止,也没有异常
我把和xml相关的基本注释了都仍不行,我把大概的代码发给你帮我看下吧,谢谢了,一下午也没有找到问题原因。
包中代码主要就是想实现,DelphiClient发xml, x3的程序接收并存入数据库中,

谢谢了!

x3alarmcode.rar

207.03 KB, 下载次数: 36

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-29 16:57:50 | 显示全部楼层

我的Alarm表'F_Alarm_ID'是关键字,做了自动填充

我的Alarm表'F_Alarm_ID'是关键字,做了自动填充。
我正在把它去了,试一下,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-29 17:17:44 | 显示全部楼层

结贴吧,谢谢

结贴吧,我把自增去了后就好了,谢谢贾老师。有问题我再发贴,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-11 21:04 , Processed in 0.040023 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表