小编Pra*_*eep的帖子

使用XPath从XML读取不同的值

我有一个XML格式如下:

<Accounts>
   <Account Number="1"   DebitAmount="1000" Amount="2827561.95" /> 
   <Account Number="225" DebitAmount="2000"  Amount="12312.00" /> 
   <Account Number="236" DebitAmount="London"    Amount="457656.00" /> 
   <Account Number="225" DebitAmount="London"    Amount="23462.40" /> 
   <Account Number="236" DebitAmount="Bangalore" Amount="2345345.00" /> 
</Accounts>
Run Code Online (Sandbox Code Playgroud)

如何使用Xpath检索唯一帐号?即,我想得到值1,225和236.

这就是我所做的:(我正在使用Delphi 2007 ...)

Const XmlStr =
' <Accounts>
   <Account Number="1"   DebitAmount="1000" Amount="2827561.95" /> 
   <Account Number="225" DebitAmount="2000"  Amount="12312.00" /> 
   <Account Number="236" DebitAmount="London"    Amount="457656.00" /> 
   <Account Number="225" DebitAmount="London"    Amount="23462.40" /> 
   <Account Number="236" DebitAmount="Bangalore" Amount="2345345.00" /> 
</Accounts>';

 function GetAccountNumbers:TList;
 Var
   XMLDOMDocument  : IXMLDOMDocument;
   accounts : IXMLDOMNodeList;
  accountdetail :IXMLDOMNode;
   i:Integer
   list :TList
 begin
   Result:=TList.Create;
   XMLDOMDocument:=CoDOMDocument.Create; …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007 delphi-2010

6
推荐指数
1
解决办法
3107
查看次数

基于多个属性从XML读取

我有一个XML格式如下:

<Accounts>
  <Account ID="1"   City="Bangalore" Amount="2827561.95" /> 
  <Account ID="225" City="New York"  Amount="12312.00" /> 
  <Account ID="236" City="London"    Amount="457656.00" /> 
  <Account ID="225" City="London"    Amount="23462.40" /> 
  <Account ID="236" City="Bangalore" Amount="2345345.00" /> 
</Accounts>
Run Code Online (Sandbox Code Playgroud)

在这里,使帐户独特的是属性ID和组合的组合City.

我怎么读这个Amount独特的?如何读取组合IDCity属性的金额?

例如,我需要Amount使用ID=225和获取帐户City=London.如果我使用代码

Node.GetAttribute('ID')=225
Run Code Online (Sandbox Code Playgroud)

它总是给我第一个ID = 225的节点

感谢您.

xml delphi delphi-2010

4
推荐指数
1
解决办法
3187
查看次数

如何从Oracle表中检索特定的XML节点?

我有一个oracle表,它有一个以CLOB格式存储XML的列.XML具有以下语法:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
 <BaseXML Version="2009.4">
 <InvoiceCanvasDetails>
     <Grouping>
       <ParentGroup Name=”Parent group 1” ID=”100”>
        <ParentGroupLineItems>
         <Item ID="461616" Name=”Item 1”>
           <Papers Quantity=10000>
                          <Paper Name="UNCOATED GROUNDWOOD SCA+ (25X38)"    
                                      ID="126287" Weight="1268" Type=”A4” /> 
                          <Paper Name="COATED GROUNDWOOD SCA+ (25X38)"    
                                      ID="126288" Weight="1290" Type=”A4” />
                     </Papers>
              </Item>
       </ParentGroupLineItems>
    </ParentGroup>
  </Grouping>
 </InvoiceCanvasDetails>
</BaseXML>
Run Code Online (Sandbox Code Playgroud)

现在,我想只检索与每个项目对应的纸张信息.即,给定项目ID,使用查询检索与其关联的所有论文.请指导我这是最好的方法.

xml oracle

2
推荐指数
1
解决办法
3万
查看次数

如何将行附加到Excel工作表?

我正在开发一个需要生成Excel工作表的应用程序.我们如何将行附加到现有的Excel工作表?我正在使用Delphi 2007.(我正在使用SM软件TXLS ......组件......但我对本机delphi excel组件的答案感到满意).普拉迪普,感谢大家

delphi excel delphi-2007

2
推荐指数
1
解决办法
7488
查看次数

由会话执行的Oracle查询

我试图跟踪针对特定数据库用户执行的SQL语句.我没有启用AUDITING,我正在使用Oracle 11g.

我有以下查询:

SELECT  
  S.MODULE, 
  SQL_TEXT , 
  S.EXECUTIONS    
FROM
  SYS.V_$SQL S, 
  SYS.ALL_USERS U
WHERE
  S.PARSING_USER_ID=U.USER_ID 
  AND UPPER(U.USERNAME) IN ('USERNAME')
  AND (UPPER(s.MODULE)='APP.EXE')
ORDER BY S.LAST_LOAD_TIME
Run Code Online (Sandbox Code Playgroud)

但是如果运行'APP.EXE'的多个用户连接到同一个db用户,我无法理解哪个OS用户执行了哪个查询.所以我尝试加入V $ SESSION视图来获取用户详细信息.

SELECT  
  S.MODULE,SQL_TEXT ,SN.OSUSER, SN.MACHINE, S.EXECUTIONS
FROM
  SYS.V_$SQL S, 
  SYS.ALL_USERS U,
  V$SESSION SN 
WHERE
  S.PARSING_USER_ID=U.USER_ID 
  AND UPPER(U.USERNAME) IN ('USERNAME')
  AND (UPPER(S.MODULE)='APP.EXE')
  AND S.SQL_ID=SN.SQL_ID
ORDER BY S.LAST_LOAD_TIME
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用(在我的情况下,它没有返回任何行)所以,我有以下问题

1)如何获得每个会话执行的查询?

2)V_ $ SQL的EXECUTIONS列似乎是来自所有会话的执行.我如何知道会话执行特定查询的次数?

3)有关查询的记录将存储在V_ $ SQL中多长时间?Oracle何时从视图中删除它?

提前感谢你们,

普拉迪普

sql oracle oracle11g

2
推荐指数
1
解决办法
6万
查看次数

Delphi:使用类助手更改按钮颜色

我需要更改delphi表单控件的视觉样式,以便从.Net环境中显示它们.为此,我需要将delphi控件的颜色更改为蓝色($ 00FCF5EE).我已广泛使用"TButton"控件,它没有"颜色"属性.因此,我尝试了一种不同的方法,通过引入父表单并从该父表继承所有其他表单形成.在父表单中,我有一个类助手来更改按钮的颜色.这是代码:(我使用的是Delphi 2007)

TButtonHelper=class helper for TButton
private
  procedure doChangeColor;
public
  procedure DrawChangeColor;
end;

TParentForm = class(TForm)
public
  procedure AfterConstruction; override;
end;
Run Code Online (Sandbox Code Playgroud)

在实施部分,我有

    procedure TButtonHelper.doChangeColor;
    var
      SaveIndex: Integer;
      FCanvas:TCanvas;
      rect:TRect;
    begin
      if csDestroying in ComponentState then exit;
      FCanvas:=TCanvas.Create;

        SaveIndex := SaveDC(Self.Handle);
        FCanvas.Lock;
        try
          FCanvas.Handle := Handle;
          FCanvas.Font := Font;
          FCanvas.Brush := self.Brush;
          FCanvas.Brush.Color:=$00FCF5EE;
          FCanvas.FillRect(BoundsRect);//Omitting the code to draw the text
        finally
          FCanvas.Handle := 0;
          FCanvas.Unlock;
          RestoreDC(handle, SaveIndex);
          FCanvas.Free;
        end;
    end;


    procedure TButtonHelper.DrawChangeColor;
    begin
        doChangeColor;
        self.Repaint;
    end;

procedure TParentForm.AfterConstruction;
    var
     i …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007

1
推荐指数
1
解决办法
6919
查看次数

类和接口之间的关联

我有一个关于类和接口之间的关联建模的问题.据我所知,接口指定了对象可以做什么; 没有提供状态或功能(何时使用接口而不是抽象类,反之亦然?).此外,我的关于OOAD(James Rubaugh的面向对象建模和设计)的书指出,关联描述了一组在对象实例之间具有共同结构和通用语义的链接.

现在,假设我有以下实体:

1)ICar接口:定义汽车可以执行的操作

2)BMW:实现ICar界面的一类

3)IWheel:定义车轮功能的界面

4)LuxuryWheel:实现IWheel接口的类

现在,从设计的角度来模拟宝马和LuuryWheel之间的关系,您认为以下哪一项是正确的?我和每个人分享了我的想法

A)在ICar和Iwheel之间创建关联.BMW类可以创建LuxuryWheel类的具体实例.这是非常灵活的,但将车的能力与Wheel的能力相结合.此外,关联的定义表明关系是在实例之间.

B)在BMW类和LuxuryWheel类之间建立关联.解决特定问题; 但是宝马与豪华车轮紧密相连

C)在BMW类和Iwheel接口之间创建关联.这样宝马可以使用任何实现IWheel界面的类型.

选项C)对我来说看起来更好.请分享你的想法.

uml ooad

1
推荐指数
1
解决办法
3401
查看次数

如何在没有"Outofmemory"错误的情况下处理数十亿个对象

我有一个可能需要处理数十亿个对象的应用程序.每个对象都是TRange类的类型.这些范围是在算法的不同部分创建的,这取决于某些条件和其他对象属性.因此,如果您有100个项目,则无法在不创建所有先前对象的情况下直接创建第100个对象.如果我创建所有(数十亿)对象并添加到集合中,系统将抛出Outofmemory错误.现在我想迭代遍历每个对象主要有两个目的:

  1. 为每个TRange对象应用操作(例如:输出某些属性)
  2. 获得某个属性的累积总和.(例如:每个范围都有一个权重属性,我想要检索总权重,即所有范围权重的总和).

如何在不提高Outofmemory的情况下为这些对象有效地创建迭代器?

我通过将函数指针传递给算法函数来处理第一种情况.例如:

procedure createRanges(aProc: TRangeProc);//aProc is a pointer to function that takes a    //TRange
var range: TRange;
  rangerec: TRangeRec;
begin
  range:=TRange.Create;
  try 
    while canCreateRange do begin//certain conditions needed to create a range
      rangerec := ReturnRangeRec;
      range.Update(rangerec);//don't create new, use the same object.
      if Assigned(aProc) then aProc(range);
    end;
  finally
    range.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但是这种方法的问题在于,要添加一个新功能,比如检索我之前提到的Total权重,要么我必须复制算法函数,要么传递一个可选的out参数.请提出一些想法.

谢谢大家
普拉迪普

delphi oop ooad design-patterns

0
推荐指数
1
解决办法
523
查看次数

交互式PL/SQL脚本

如何编写接受用户输入的PL/SQL脚本,如下所示?

1:输出客户

2:输出员工

3:输出交易

输入您的选项(1/2/3):

谢谢Pradeep

oracle plsql oracle10g

0
推荐指数
1
解决办法
1608
查看次数