/Source/FR_DBREL.PAS

http://github.com/FastReports/FreeReport · Pascal · 129 lines · 72 code · 20 blank · 37 comment · 0 complexity · 117373e22eb5e291bdc77e34d60f6a35 MD5 · raw file

  1. {*****************************************}
  2. { }
  3. { FastReport v2.3 }
  4. { DB related stuff }
  5. { }
  6. { Copyright (c) 1998-99 by Tzyganenko A. }
  7. { }
  8. {*****************************************}
  9. unit FR_DBRel;
  10. interface
  11. {$I FR.inc}
  12. uses
  13. SysUtils, Windows, Messages, Classes
  14. {$IFDEF IBO}, IB_Components
  15. {$ELSE}
  16. {$IFDEF Delphi2}
  17. , DBTables, BDE
  18. {$ENDIF}
  19. , DB
  20. {$ENDIF};
  21. type
  22. TfrBookmark =
  23. {$IFDEF IBO} type string;
  24. {$ELSE} type TBookmark;
  25. {$ENDIF}
  26. TfrTDataSet =
  27. {$IFDEF IBO} class(TIB_DataSet)
  28. {$ELSE} class(TDataSet)
  29. {$ENDIF}
  30. end;
  31. TfrTField =
  32. {$IFDEF IBO} class(TIB_Column)
  33. {$ELSE} class(TField)
  34. {$ENDIF}
  35. end;
  36. TfrTBlobField =
  37. {$IFDEF IBO} class(TIB_ColumnBlob)
  38. {$ELSE} class(TBlobField)
  39. {$ENDIF}
  40. end;
  41. const
  42. frEmptyBookmark =
  43. {$IFDEF IBO} ''
  44. {$ELSE} nil
  45. {$ENDIF};
  46. function frIsBlob(Field: TfrTField): Boolean;
  47. function frIsBookmarksEqual(DataSet: TfrTDataSet; b1, b2: TfrBookmark): Boolean;
  48. procedure frGetFieldNames(DataSet: TfrTDataSet; List: TStrings);
  49. function frGetBookmark(DataSet: TfrTDataSet): TfrBookmark;
  50. procedure frFreeBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
  51. procedure frGotoBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
  52. implementation
  53. function frIsBlob(Field: TfrTField): Boolean;
  54. begin
  55. {$IFDEF IBO}
  56. Result := (Field <> nil) and (Field.SQLType = 530);
  57. {$ELSE}
  58. Result := (Field <> nil) and (Field.DataType in [ftBlob..ftTypedBinary]);
  59. {$ENDIF};
  60. end;
  61. procedure frGetFieldNames(DataSet: TfrTDataSet; List: TStrings);
  62. begin
  63. {$IFDEF IBO}
  64. DataSet.Prepare;
  65. DataSet.GetFieldNamesList(List);
  66. {$ELSE}
  67. DataSet.GetFieldNames(List);
  68. {$ENDIF}
  69. end;
  70. function frGetBookmark(DataSet: TfrTDataSet): TfrBookmark;
  71. begin
  72. {$IFDEF IBO}
  73. Result := DataSet.Bookmark;
  74. {$ELSE}
  75. Result := DataSet.GetBookmark;
  76. {$ENDIF}
  77. end;
  78. procedure frGotoBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
  79. begin
  80. {$IFDEF IBO}
  81. DataSet.Bookmark := Bookmark;
  82. {$ELSE}
  83. DataSet.GotoBookmark(BookMark);
  84. {$ENDIF}
  85. end;
  86. procedure frFreeBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
  87. begin
  88. {$IFNDEF IBO}
  89. DataSet.FreeBookmark(BookMark);
  90. {$ENDIF}
  91. end;
  92. {$HINTS OFF}
  93. function frIsBookmarksEqual(DataSet: TfrTDataSet; b1, b2: TfrBookmark): Boolean;
  94. var
  95. n: Integer;
  96. begin
  97. {$IFDEF IBO}
  98. Result := b1 = b2;
  99. {$ELSE}
  100. {$IFDEF Delphi2}
  101. dbiCompareBookmarks(DataSet.Handle, b1, b2, n);
  102. Result := n = 0;
  103. {$ELSE}
  104. Result := DataSet.CompareBookmarks(b1, b2) = 0;
  105. {$ENDIF}
  106. {$ENDIF}
  107. end;
  108. {$HINTS ON}
  109. end.