我有一个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) 我有一个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独特的?如何读取组合ID和City属性的金额?
例如,我需要Amount使用ID=225和获取帐户City=London.如果我使用代码
Node.GetAttribute('ID')=225
Run Code Online (Sandbox Code Playgroud)
它总是给我第一个ID = 225的节点
感谢您.
我有一个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,使用查询检索与其关联的所有论文.请指导我这是最好的方法.
我正在开发一个需要生成Excel工作表的应用程序.我们如何将行附加到现有的Excel工作表?我正在使用Delphi 2007.(我正在使用SM软件TXLS ......组件......但我对本机delphi excel组件的答案感到满意).普拉迪普,感谢大家
我试图跟踪针对特定数据库用户执行的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何时从视图中删除它?
提前感谢你们,
普拉迪普
我需要更改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) 我有一个关于类和接口之间的关联建模的问题.据我所知,接口指定了对象可以做什么; 没有提供状态或功能(何时使用接口而不是抽象类,反之亦然?).此外,我的关于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)对我来说看起来更好.请分享你的想法.
我有一个可能需要处理数十亿个对象的应用程序.每个对象都是TRange类的类型.这些范围是在算法的不同部分创建的,这取决于某些条件和其他对象属性.因此,如果您有100个项目,则无法在不创建所有先前对象的情况下直接创建第100个对象.如果我创建所有(数十亿)对象并添加到集合中,系统将抛出Outofmemory错误.现在我想迭代遍历每个对象主要有两个目的:
如何在不提高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参数.请提出一些想法.
谢谢大家
普拉迪普
如何编写接受用户输入的PL/SQL脚本,如下所示?
1:输出客户
2:输出员工
3:输出交易
输入您的选项(1/2/3):
谢谢Pradeep