#ifndef Unit1H
#define Unit1H
#include <dao_2k.h>
#include <ADODB.hpp>
#include <Classes.hpp>
#include <ComCtrls.hpp>
#include <Controls.hpp>
#include <DB.hpp>
#include <StdCtrls.hpp>
class TForm1 : public TForm
{
__published:
TButton *Button1;
TADOConnection *ADOConnection1;
TADOQuery *ADOQuery1;
TTreeView *TreeView1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
public:
void addTmpData(int,int);
void ChildNodeToTree(TTreeNode* ,int&);
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner){}
//---------------------------------------------------------------------------
void TForm1::addTmpData(int intNAME ,int intSON_NAME)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
AnsiString Msg = Format("insert into TmpTable values(%d,%d)", ARRAYOFCONST((intNAME,intSON_NAME)));
ADOQuery1->SQL->Add(Msg);
ADOQuery1->ExecSQL();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(FileExists("record.mdb")) return;
Variant xx=CreateOleObject("ADOX.Catalog"); //#include <dao_2k.h>
xx.OleFunction("Create","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=record.mdb");
WideString ss;
ss="Provider=Microsoft.Jet.OLEDB.4.0;/n/r"
"Data Source="+ExtractFilePath(Application->ExeName)+"record.mdb;"
"Persist Security Info=False";
ADOConnection1->ConnectionString=ss;
ADOQuery1->Connection=ADOConnection1;
AnsiString sql;
sql="CREATE TABLE TmpTable(NAME INTEGER,SON_NAME INTEGER)"; //权用整数
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->ExecSQL(); //创建新表TmpTable
ADOQuery1->Close();
addTmpData(1 ,11);
addTmpData(1 ,12);
addTmpData(1 ,13);
addTmpData(1 ,17);
addTmpData(1 ,15);
addTmpData(1 ,123);
addTmpData(1 ,312);
addTmpData(1 ,412);
addTmpData(1 ,231);
addTmpData(2 ,12);
addTmpData(2 ,22);
addTmpData(2 ,23);
addTmpData(2 ,123);
addTmpData(2 ,312);
addTmpData(2 ,412);
addTmpData(2 ,231);
addTmpData(12 ,123);
addTmpData(12 ,312);
addTmpData(12 ,412);
addTmpData(23 ,123);
addTmpData(23 ,231);
addTmpData(123 ,1234);
addTmpData(123 ,3412);
ADOConnection1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(!FileExists("record.mdb")) return;
AnsiString sql;
WideString ss;
ss="Provider=Microsoft.Jet.OLEDB.4.0;/n/r"
"Data Source="+ExtractFilePath(Application->ExeName)+"record.mdb;"
"Persist Security Info=False";
ADOConnection1->ConnectionString=ss;
ADOQuery1->Connection=ADOConnection1;
TreeView1->Items->Clear();
int sum,theNum;
ADOQuery1->SQL->Clear();
sql="select distinct NAME from TmpTable order by NAME";
ADOQuery1->SQL->Add(sql);
ADOQuery1->Open();
sum=ADOQuery1->RecordCount;
while(sum-->0)
{
TreeView1->Items->Add(0,ADOQuery1->Fields->Fields[0]->AsString);
ADOQuery1->Next();
}
ADOQuery1->Close();
//以下正题
sum=TreeView1->Items->Count;
theNum=0;
while(theNum<sum)
{
ChildNodeToTree(TreeView1->Items->Item[theNum],sum);
theNum++;
}
TreeView1->FullExpand();
}
//---------------------------------------------------------------------------
void TForm1::ChildNodeToTree(TTreeNode* node,int& count)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
AnsiString sql;
sql="select SON_NAME from TmpTable where NAME="+node->Text;
ADOQuery1->SQL->Add(sql);
ADOQuery1->Open();
while(!ADOQuery1->Eof)
{
TreeView1->Items->AddChild(node,ADOQuery1->Fields->Fields[0]->AsString);
ADOQuery1->Next();
}
count+=ADOQuery1->RecordCount;
}