rpgBillsDm.pas 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. unit rpgBillsDm;
  2. interface
  3. uses
  4. SysUtils, Classes, sdDB, sdProvider, ADODB, ProjGatherTree;
  5. type
  6. TrpgBillsData = class(TDataModule)
  7. sdpBills: TsdADOProvider;
  8. sddBills: TsdDataSet;
  9. private
  10. procedure SaveBillsTreeNode(ANode: TProjGatherTreeNode);
  11. procedure SaveBillsTree(ATree: TProjGatherTree);
  12. public
  13. constructor Create(AConnection: TADOConnection);
  14. procedure SaveDataTo(ATree: TProjGatherTree; const ATableName: string);
  15. end;
  16. implementation
  17. uses CacheTree;
  18. {$R *.dfm}
  19. { TrpgBillsData }
  20. constructor TrpgBillsData.Create(AConnection: TADOConnection);
  21. begin
  22. inherited Create(nil);
  23. sdpBills.Connection := AConnection;
  24. end;
  25. procedure TrpgBillsData.SaveBillsTree(ATree: TProjGatherTree);
  26. var
  27. iNode: Integer;
  28. begin
  29. for iNode := 0 to ATree.CacheNodes.Count - 1 do
  30. SaveBillsTreeNode(TProjGatherTreeNode(ATree.CacheNodes.Items[iNode]));
  31. end;
  32. procedure TrpgBillsData.SaveBillsTreeNode(ANode: TProjGatherTreeNode);
  33. var
  34. Rec: TsdDataRecord;
  35. begin
  36. Rec := sddBills.Add;
  37. Rec.ValueByName('ID').AsInteger := ANode.ID;
  38. Rec.ValueByName('ParentID').AsInteger := ANode.ParentID;
  39. Rec.ValueByName('NextSiblingID').AsInteger := ANode.NextSiblingID;
  40. Rec.ValueByName('Code').AsString := ANode.Code;
  41. Rec.ValueByName('B_Code').AsString := ANode.B_Code;
  42. Rec.ValueByName('Name').AsString := ANode.Name;
  43. Rec.ValueByName('Units').AsString := ANode.Units;
  44. Rec.ValueByName('Price').AsFloat := ANode.Price;
  45. Rec.ValueByName('SerialNo').AsInteger := ANode.SerialNo;
  46. Rec.ValueByName('IsLeaf').AsBoolean := ANode.Children.Count = 0;
  47. Rec.ValueByName('XiangCode').AsString := ANode.XiangCode;
  48. Rec.ValueByName('MuCode').AsString := ANode.MuCode;
  49. Rec.ValueByName('JieCode').AsString := ANode.JieCode;
  50. Rec.ValueByName('XimuCode').AsString := ANode.XimuCode;
  51. Rec.ValueByName('IndexCode').AsString := ANode.IndexCode;
  52. Rec.ValueByName('ChapterParentID').AsInteger := ANode.ChapterParentID;
  53. end;
  54. procedure TrpgBillsData.SaveDataTo(ATree: TProjGatherTree; const ATableName: string);
  55. begin
  56. sdpBills.TableName := ATableName;
  57. sddBills.Open;
  58. sddBills.BeginUpdate;
  59. try
  60. SaveBillsTree(ATree);
  61. finally
  62. sddBills.EndUpdate;
  63. sddBills.Save;
  64. end;
  65. end;
  66. end.