ImportDecorate.pas 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. unit ImportDecorate;
  2. interface
  3. uses
  4. Classes, ADODB, DataBase, ConstTypeUnit, Provider,
  5. ConstMethodUnit, DBClient, DB, ConstVarUnit, ScFileArchiver;
  6. type
  7. TImportDecorator = class
  8. private
  9. FProjectArchiver: TScProjectFileArchiver;
  10. FAtExprs: TADOTable;
  11. FDspExprs: TDataSetProvider;
  12. FCdsExprs: TClientDataSet;
  13. procedure DecorateExprs;
  14. procedure ConnectExprs;
  15. procedure Save;
  16. public
  17. constructor Create(const AProjectFile: string);
  18. destructor Destroy; override;
  19. procedure Decorate;
  20. end;
  21. implementation
  22. { TImportDecorator }
  23. procedure TImportDecorator.ConnectExprs;
  24. begin
  25. FAtExprs.Connection := FProjectArchiver.Connection;
  26. FAtExprs.TableName := 'Exprs';
  27. FDspExprs.DataSet := FAtExprs;
  28. FCdsExprs.SetProvider(FDspExprs);
  29. FCdsExprs.IndexFieldNames := 'RecdID';
  30. FCdsExprs.Active := True;
  31. end;
  32. constructor TImportDecorator.Create(const AProjectFile: string);
  33. begin
  34. FProjectArchiver := TScProjectFileArchiver.Create;
  35. FAtExprs := TADOTable.Create(nil);
  36. FDspExprs := TDataSetProvider.Create(nil);
  37. FDspExprs.UpdateMode := upWhereKeyOnly;
  38. FCdsExprs := TClientDataSet.Create(nil);
  39. FProjectArchiver.FileName := AProjectFile;
  40. if FProjectArchiver.OpenFile then
  41. ConnectExprs;
  42. end;
  43. procedure TImportDecorator.Decorate;
  44. begin
  45. if FCdsExprs.Active then
  46. begin
  47. DecorateExprs;
  48. Save;
  49. end;
  50. end;
  51. procedure TImportDecorator.DecorateExprs;
  52. begin
  53. FCdsExprs.First;
  54. while not FCdsExprs.Eof do
  55. begin
  56. if FCdsExprs.FieldByName('MajorID').AsInteger = 4 then
  57. begin
  58. FCdsExprs.Edit;
  59. FCdsExprs.FieldByName('MajorID').AsInteger := Exprs_DrawQty_ID;
  60. FCdsExprs.FieldByName('MinorID').AsInteger := Exprs_DQty_ID;
  61. FCdsExprs.Post;
  62. end;
  63. FCdsExprs.Next;
  64. end;
  65. end;
  66. destructor TImportDecorator.Destroy;
  67. begin
  68. FProjectArchiver.Free;
  69. FAtExprs.Free;
  70. FDspExprs.Free;
  71. FCdsExprs.Free;
  72. inherited;
  73. end;
  74. procedure TImportDecorator.Save;
  75. begin
  76. FCdsExprs.ApplyUpdates(0);
  77. FProjectArchiver.Save;
  78. end;
  79. end.