MaiXinRong 9 years ago
parent
commit
83fe77c5c5
2 changed files with 92 additions and 0 deletions
  1. 30 0
      DataModules/DbTreeDm.dfm
  2. 62 0
      DataModules/DbTreeDm.pas

+ 30 - 0
DataModules/DbTreeDm.dfm

@@ -0,0 +1,30 @@
+object DbTreeData: TDbTreeData
+  OldCreateOrder = False
+  Left = 626
+  Top = 338
+  Height = 276
+  Width = 147
+  object acDbTree: TADOConnection
+    LoginPrompt = False
+    Left = 56
+    Top = 16
+  end
+  object sdpDbTree: TsdADOProvider
+    Left = 56
+    Top = 72
+  end
+  object sddDbTree: TsdDataSet
+    Active = False
+    Provider = sdpDbTree
+    Left = 56
+    Top = 128
+  end
+  object sdvDbTree: TsdDataView
+    Active = False
+    DataSet = sddDbTree
+    Filtered = False
+    Columns = <>
+    Left = 56
+    Top = 184
+  end
+end

+ 62 - 0
DataModules/DbTreeDm.pas

@@ -0,0 +1,62 @@
+unit DbTreeDm;
+
+interface
+
+uses
+  SysUtils, Classes, sdDB, sdProvider, DB, ADODB, sdIDTree;
+
+type
+  TDbTreeData = class(TDataModule)
+    acDbTree: TADOConnection;
+    sdpDbTree: TsdADOProvider;
+    sddDbTree: TsdDataSet;
+    sdvDbTree: TsdDataView;
+  private
+    FDbTree: TsdIDTree;
+
+    procedure LoadDbTree;
+    procedure OpenDbTree(const AFileName, ATableName: string);
+  public
+    constructor Create(const AFileName, ATableName: string);
+
+    property DbTree: TsdIDTree read FDbTree;
+  end;
+
+implementation
+
+uses
+  Connections;
+
+{$R *.dfm}
+
+{ TDbTreeData }
+
+constructor TDbTreeData.Create(const AFileName, ATableName: string);
+begin
+  inherited Create(nil);
+  OpenDbTree(AFileName, ATableName);
+  LoadDbTree;
+end;
+
+procedure TDbTreeData.LoadDbTree;
+begin
+  FDbTree := TsdIDTree.Create;
+  FDbTree.KeyFieldName := 'ID';
+  FDbTree.ParentFieldName := 'ParentID';
+  FDbTree.NextSiblingFieldName := 'NextSiblingID';
+  FDbTree.DataView := sdvDbTree;
+end;
+
+procedure TDbTreeData.OpenDbTree(const AFileName, ATableName: string);
+begin
+  acDbTree.ConnectionString := Format(SAdoConnectStr, [AFileName]);
+  acDbTree.Open;
+
+  sdpDbTree.TableName := ATableName;
+  sdpDbTree.Connection := acDbTree;
+
+  sddDbTree.Open;
+  sdvDbTree.Open;
+end;
+
+end.