sql查询结果后,生成xml文件,想实现"id"相同时,"id1"如果有10条记录,那node2就产生10行记录。以下代码成了每个"id1"一个xml文件了,应该是怎么修改法
procedure TForm1.Button9Click(Sender: TObject);
var
xmldcmnt1: TXMLDocument;
Rootnode,node,node1,node2,node3,node4 : IXMLNode;
fid,id,id1,strsql,amt: string;
Branch,fBranch: string;
branchname,branchno,kemu,lx:string;
m,n,i :Integer;
begin
strsql := 'execute HLQSales.dbo.hlq_sale_yytax ''' + DateToStr(RzDateTimePicker1.Date) + ''',''' + DateToStr(RzDateTimePicker2.Date) + ''',''' + LeftStr(rzComboBox1.Text, 2) + '''';
with qry1 do begin
Close;
SQL.Clear;
SQL.Add(strsql);
Open;
end;
m := 299;
fBranch :='';
qry1.First;
while not qry1.Eof do begin
//第一条记录走”相同“
Branch :=qry1.FieldByName('branch_name').AsString;
if (Branch <> fBranch) then begin
fBranch:=Branch;
m:=m+1;
n:=0;
end;
n:=n+1;
id :=IntToStr(m);
id1 :=IntToStr(n);
branchno :=qry1.FieldByName('branch_yyno').AsString;
branchname :=qry1.FieldByName('branch_name').AsString;
kemu :=qry1.FieldByName('accounting').AsString;
lx :=qry1.FieldByName('lx').AsString;
if lx = '收入' then amt:=qry1.FieldByName('pos_amtn').AsString
else if lx='税收' then amt:=qry1.FieldByName('tax_amt').AsString
else amt:=qry1.FieldByName('cost_amtn').AsString;
xmldcmnt1 := TXMLDocument.Create(nil);
try
//加入版本信息 ‘<?xmldcmnt1 version="1.0" encoding="UTF-8" ?> ’
xmldcmnt1.Active := True;
xmldcmnt1.Version := '1.0';
xmldcmnt1.Encoding :='UTF-8';
Rootnode := xmldcmnt1.CreateNode('ufinterface');
Rootnode.Attributes['billtype']:='gl';
Rootnode.Attributes['sender']:='001';
Rootnode.Attributes['proc']:='add';
node := xmldcmnt1.CreateNode('voucher');
node.Attributes['id']:='';
Rootnode.ChildNodes.Add(node);
node1 := xmldcmnt1.CreateNode('voucher_head');
node.ChildNodes.Add(node1);
node2 := xmldcmnt1.CreateNode('company');
if LeftStr(rzComboBox1.Text, 2)='01' then node2.Text:='08'
else if LeftStr(rzComboBox1.Text, 2)='02' then node2.Text:='04'
else if LeftStr(rzComboBox1.Text, 2)='03' then node2.Text:='03';
node1.ChildNodes.Add(node2);
node2 := xmldcmnt1.CreateNode('voucher_type');
node2.Text:='记销凭证';
node1.ChildNodes.Add(node2);
node2 := xmldcmnt1.CreateNode('fiscal_year');
node2.Text:=FormatDateTime('YYYY',RzDateTimePicker2.Date);
node1.ChildNodes.Add(node2);
node2 := xmldcmnt1.CreateNode('accounting_period');
node2.Text:=FormatDateTime('MM',RzDateTimePicker2.Date);
node1.ChildNodes.Add(node2);
node2 := xmldcmnt1.CreateNode('voucher_id');
node2.Text:=id;
node1.ChildNodes.Add(node2);
node2 := xmldcmnt1.CreateNode('attachment_number');
node2.Text:='0';
node1.ChildNodes.Add(node2);
node2 := xmldcmnt1.CreateNode('date');
node2.Text:=DateToStr(RzDateTimePicker2.Date);
node1.ChildNodes.Add(node2);
node2 := xmldcmnt1.CreateNode('enter');
node2.Text :='王楠';
//node2.Text:= Form1.StatusBar1.Panels.Items[1].Text;
node1.ChildNodes.Add(node2);
node2 := xmldcmnt1.CreateNode('signature');
node2.Text:='N';
node1.ChildNodes.Add(node2);
node2 := xmldcmnt1.CreateNode('voucher_making_system');
node2.Text:='外部系统交换平台';
node1.ChildNodes.Add(node2);
node1 := xmldcmnt1.CreateNode('voucher_body');
node.ChildNodes.Add(node1);
node2 := xmldcmnt1.CreateNode('entry');
node1.ChildNodes.Add(node2);
node3 := xmldcmnt1.CreateNode('entry_id');
node3.Text:=id1;
node2.ChildNodes.Add(node3);
node3 := xmldcmnt1.CreateNode('account_code');
node3.Text:=kemu;
node2.ChildNodes.Add(node3);
node3 := xmldcmnt1.CreateNode('abstract');
node3.Text:=branchname+FormatDateTime('MM月DD日',RzDateTimePicker1.Date)
+'-'+FormatDateTime('MM月DD日',RzDateTimePicker2.Date)+'收入转成本';
node2.ChildNodes.Add(node3);
node3 := xmldcmnt1.CreateNode('currency');
node3.Text:='人民币';
node2.ChildNodes.Add(node3);
if lx ='成本' then
begin
node3 := xmldcmnt1.CreateNode('natural_debit_currency');
node3.Text:=amt;
node2.ChildNodes.Add(node3);
end else begin
node3 := xmldcmnt1.CreateNode('natural_credit_currency');
node3.Text:=amt;
node2.ChildNodes.Add(node3);
end;
node3 := xmldcmnt1.CreateNode('auxiliary_accounting');
node2.ChildNodes.Add(node3);
node4 := xmldcmnt1.CreateNode('item');
node4.Attributes['name'] := '部门档案';
if lx ='库存' then node4.Text :='0104'
else if lx='税收' then node4.Text :='0103'
else node4.Text :=branchno ;
node3.ChildNodes.Add(node4);
xmldcmnt1.DocumentElement :=Rootnode;
xmldcmnt1.SaveToFile('D:\凭证\'+branchname+'yypz.xml');
xmldcmnt1.Active := False;
finally
xmldcmnt1.Free;
end;
mmo1.Lines.Add(id);
mmo1.Lines.Add(branchname);
mmo1.Lines.Add(id1);
mmo1.Lines.Add(kemu);
mmo1.Lines.Add(amt);
mmo1.Lines.Add(branchno);
mmo1.Lines.Add(#13#10);
fBranch :=Branch;
qry1.Next;
end;
showmessage('创建成功!');
button9.Enabled :=False;
end;