1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- unit rpgBillsDm;
- interface
- uses
- SysUtils, Classes, sdDB, sdProvider, ADODB, ProjGatherTree;
- type
- TrpgBillsData = class(TDataModule)
- sdpBills: TsdADOProvider;
- sddBills: TsdDataSet;
- private
- procedure SaveBillsTreeNode(ANode: TProjGatherTreeNode);
- procedure SaveBillsTree(ATree: TProjGatherTree);
- public
- constructor Create(AConnection: TADOConnection);
- procedure SaveDataTo(ATree: TProjGatherTree; const ATableName: string);
- end;
- implementation
- uses CacheTree;
- {$R *.dfm}
- { TrpgBillsData }
- constructor TrpgBillsData.Create(AConnection: TADOConnection);
- begin
- inherited Create(nil);
- sdpBills.Connection := AConnection;
- end;
- procedure TrpgBillsData.SaveBillsTree(ATree: TProjGatherTree);
- var
- iNode: Integer;
- begin
- for iNode := 0 to ATree.CacheNodes.Count - 1 do
- SaveBillsTreeNode(TProjGatherTreeNode(ATree.CacheNodes.Items[iNode]));
- end;
- procedure TrpgBillsData.SaveBillsTreeNode(ANode: TProjGatherTreeNode);
- var
- Rec: TsdDataRecord;
- begin
- Rec := sddBills.Add;
- Rec.ValueByName('ID').AsInteger := ANode.ID;
- Rec.ValueByName('ParentID').AsInteger := ANode.ParentID;
- Rec.ValueByName('NextSiblingID').AsInteger := ANode.NextSiblingID;
- Rec.ValueByName('Code').AsString := ANode.Code;
- Rec.ValueByName('B_Code').AsString := ANode.B_Code;
- Rec.ValueByName('Name').AsString := ANode.Name;
- Rec.ValueByName('Units').AsString := ANode.Units;
- Rec.ValueByName('Price').AsFloat := ANode.Price;
- Rec.ValueByName('SerialNo').AsInteger := ANode.SerialNo;
- Rec.ValueByName('IsLeaf').AsBoolean := ANode.Children.Count = 0;
- Rec.ValueByName('XiangCode').AsString := ANode.XiangCode;
- Rec.ValueByName('MuCode').AsString := ANode.MuCode;
- Rec.ValueByName('JieCode').AsString := ANode.JieCode;
- Rec.ValueByName('XimuCode').AsString := ANode.XimuCode;
- Rec.ValueByName('IndexCode').AsString := ANode.IndexCode;
- Rec.ValueByName('ChapterParentID').AsInteger := ANode.ChapterParentID;
- end;
- procedure TrpgBillsData.SaveDataTo(ATree: TProjGatherTree; const ATableName: string);
- begin
- sdpBills.TableName := ATableName;
- sddBills.Open;
- sddBills.BeginUpdate;
- try
- SaveBillsTree(ATree);
- finally
- sddBills.EndUpdate;
- sddBills.Save;
- end;
- end;
- end.
|