unit tree;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, DB, ADODB;
type
TForm1 = class(TForm)
ListView1: TListView;
run: TButton;
ADOTable1: TADOTable;
ADOTable1gxy: TBooleanField;
ADOTable1xlsc: TBooleanField;
ADOTable1dmyh2: TBooleanField;
ADOTable1gxb: TBooleanField;
ADOTable1gxz: TBooleanField;
ADOTable1nxg: TBooleanField;
ADOTable1wy: TBooleanField;
ADOTable1wky: TBooleanField;
ADOTable1chy: TBooleanField;
ADOTable1jxgy: TBooleanField;
ADOTable1yxgy: TBooleanField;
ADOTable1gyh: TBooleanField;
ADOTable1szjb: TBooleanField;
ADOTable1mxzqg: TBooleanField;
ADOTable1fxb: TBooleanField;
ADOTable1fjh: TBooleanField;
ADOTable1jzb: TBooleanField;
ADOTable1ggj: TBooleanField;
ADOTable1jzy: TBooleanField;
ADOTable1dsz: TBooleanField;
ADOTable1dny: TBooleanField;
ADOTable1qlx: TBooleanField;
ADOTable1fgg: TBooleanField;
ADOTable1zhi: TBooleanField;
ADOTable1pfb: TBooleanField;
ADOTable1yany: TBooleanField;
ADOTable1quchi: TBooleanField;
ADOTable1bnz: TBooleanField;
ADOTable1qgy: TBooleanField;
ADOTable1swm: TBooleanField;
ADOTable1erl: TBooleanField;
ADOTable1bdy: TBooleanField;
ADOTable1feiy: TBooleanField;
ADOTable1jzcy: TBooleanField;
ADOTable1weiy: TBooleanField;
ADOTable1shiy: TBooleanField;
ADOTable1gany: TBooleanField;
ADOTable1ruxy: TBooleanField;
ADOTable1gjy: TBooleanField;
ADOTable1biyy: TBooleanField;
ADOTable1bgy: TBooleanField;
ADOTable1tnb: TBooleanField;
ADOQuery1: TADOQuery;
ADOQuery1gxy: TBooleanField;
ADOQuery1xlsc: TBooleanField;
ADOQuery1dmyh2: TBooleanField;
ADOQuery1gxb: TBooleanField;
ADOQuery1gxz: TBooleanField;
ADOQuery1nxg: TBooleanField;
ADOQuery1wy: TBooleanField;
ADOQuery1wky: TBooleanField;
ADOQuery1chy: TBooleanField;
ADOQuery1jxgy: TBooleanField;
ADOQuery1yxgy: TBooleanField;
ADOQuery1gyh: TBooleanField;
ADOQuery1szjb: TBooleanField;
ADOQuery1mxzqg: TBooleanField;
ADOQuery1fxb: TBooleanField;
ADOQuery1fjh: TBooleanField;
ADOQuery1jzb: TBooleanField;
ADOQuery1ggj: TBooleanField;
ADOQuery1jzy: TBooleanField;
ADOQuery1dsz: TBooleanField;
ADOQuery1dny: TBooleanField;
ADOQuery1qlx: TBooleanField;
ADOQuery1fgg: TBooleanField;
ADOQuery1zhi: TBooleanField;
ADOQuery1pfb: TBooleanField;
ADOQuery1yany: TBooleanField;
ADOQuery1quchi: TBooleanField;
ADOQuery1bnz: TBooleanField;
ADOQuery1qgy: TBooleanField;
ADOQuery1swm: TBooleanField;
ADOQuery1erl: TBooleanField;
ADOQuery1bdy: TBooleanField;
ADOQuery1feiy: TBooleanField;
ADOQuery1jzcy: TBooleanField;
ADOQuery1weiy: TBooleanField;
ADOQuery1shiy: TBooleanField;
ADOQuery1gany: TBooleanField;
ADOQuery1ruxy: TBooleanField;
ADOQuery1gjy: TBooleanField;
ADOQuery1biyy: TBooleanField;
ADOQuery1bgy: TBooleanField;
ADOQuery1tnb: TBooleanField;
DataSource1: TDataSource;
Button1: TButton;
procedure runClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure setvalue(var i,itnb:integer);
begin //置零,初始化各值
i:=0;
itnb:=0;
end;
procedure TForm1.runClick(Sender: TObject);
var
i,itnb:integer;
item: TListItem; // 動態(tài)item
procedure fillTable(num,i,itnb:integer) ; //填表的嵌套過程
var
jnum,jitnb,jptnb,jitnb_no:string;
ptnb:real;
itnb_no:integer;
begin
itnb_no:=i-itnb;
if i<>0
then
ptnb:=itnb/i
else
ptnb:=8;
jnum:=inttostr(num);
jitnb_no:=inttostr(itnb_no);
jitnb:=inttostr(itnb);
jptnb:=floattostr(ptnb);
item.caption := jnum ;
item.subitems.Add(jitnb);
item.subitems.Add(jitnb_no) ;
item.subitems.Add(jptnb);
end;
begin
try
with adoquery1 do
begin
sql.clear;
sql.add('select * from tjE_g ');
open;
listview1.Items.BeginUpdate; //開始更新
try
listview1.items.clear;
setvalue(i,itnb);
first;
while not eof do //1
begin
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='1')and(fieldbyname('swm').AsVariant='1')and(fieldbyname('gxz').AsVariant='1')
then
i:=i+1
else
i:=i;
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='1')and(fieldbyname('swm').AsVariant='1')and(fieldbyname('gxz').AsVariant='1')and(fieldbyname('tnb').AsVariant='1')
then
itnb:=itnb+1
else
itnb:=itnb;
next;
end ;
item := listview1.items.add;
fillTable(1,i,itnb);
setvalue(i,itnb);
first; //2
while not eof do
begin
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='1')and(fieldbyname('swm').AsVariant='1')and(fieldbyname('gxz').AsVariant='0')
then
i:=i+1
else
i:=i;
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='1')and(fieldbyname('swm').AsVariant='1')and(fieldbyname('gxz').AsVariant='0')and(fieldbyname('tnb').AsVariant='1')
then
itnb:=itnb+1
else
itnb:=itnb;
next;
end ;
item := listview1.items.add;
fillTable(2,i,itnb);
setvalue(i,itnb);
first; //3
while not eof do
begin
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='1')and(fieldbyname('swm').AsVariant='0')and(fieldbyname('gxz').AsVariant='1')
then
i:=i+1
else
i:=i;
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='1')and(fieldbyname('swm').AsVariant='0')and(fieldbyname('gxz').AsVariant='1')and(fieldbyname('tnb').AsVariant='1')
then
itnb:=itnb+1
else
itnb:=itnb;
next;
end ;
item := listview1.items.add;
fillTable(3,i,itnb);
setvalue(i,itnb);
first; //4
while not eof do
begin
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='1')and(fieldbyname('swm').AsVariant='0')and(fieldbyname('gxz').AsVariant='0')
then
i:=i+1
else
i:=i;
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='1')and(fieldbyname('swm').AsVariant='0')and(fieldbyname('gxz').AsVariant='0')and(fieldbyname('tnb').AsVariant='1')
then
itnb:=itnb+1
else
itnb:=itnb;
next;
end ;
item := listview1.items.add;
fillTable(4,i,itnb);
setvalue(i,itnb);
first; //5
while not eof do
begin
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='0')and(fieldbyname('swm').AsVariant='1')and(fieldbyname('gxz').AsVariant='1')
then
i:=i+1
else
i:=i;
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='0')and(fieldbyname('swm').AsVariant='1')and(fieldbyname('gxz').AsVariant='1')and(fieldbyname('tnb').AsVariant='1')
then
itnb:=itnb+1
else
itnb:=itnb;
next;
end ;
item := listview1.items.add;
fillTable(5,i,itnb);
setvalue(i,itnb);
first; //6
while not eof do
begin
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='0')and(fieldbyname('swm').AsVariant='1')and(fieldbyname('gxz').AsVariant='0')
then
i:=i+1
else
i:=i;
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='0')and(fieldbyname('swm').AsVariant='1')and(fieldbyname('gxz').AsVariant='0')and(fieldbyname('tnb').AsVariant='1')
then
itnb:=itnb+1
else
itnb:=itnb;
next;
end ;
item := listview1.items.add;
fillTable(6,i,itnb);
setvalue(i,itnb);
first; //7
while not eof do
begin
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='0')and(fieldbyname('swm').AsVariant='0')and(fieldbyname('gxz').AsVariant='1')
then
i:=i+1
else
i:=i;
with adoquery1 do
if (fieldbyname('gxb').AsVariant='1')and(fieldbyname('gxy').AsVariant='0')and(fieldbyname('swm').AsVariant='0')and(fieldbyname('gxz').AsVariant='1')and(fieldbyname('tnb').AsVariant='1')
then