home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / zkuste / delphi / kolekce / d6 / FRCLX.ZIP / SOURCE / FR_DBRel.pas < prev    next >
Pascal/Delphi Source File  |  2001-07-03  |  4KB  |  163 lines

  1.  
  2. {******************************************}
  3. {                                          }
  4. {           FastReport CLX v2.4            }
  5. {             DB related stuff             }
  6. {                                          }
  7. { Copyright (c) 1998-2001 by Tzyganenko A. }
  8. {                                          }
  9. {******************************************}
  10.  
  11. unit FR_DBRel;
  12.  
  13. interface
  14.  
  15. {$I FR.inc}
  16.  
  17. uses
  18.   SysUtils, Classes
  19. {$IFDEF IBO}
  20. , IB_Components
  21. {$ELSE}
  22.  , DB
  23. {$ENDIF};
  24.  
  25. type
  26.   TfrBookmark =
  27. {$IFDEF IBO} type string;
  28. {$ELSE} type TBookmark;
  29. {$ENDIF}
  30.  
  31.   TfrTDataSet =
  32. {$IFDEF IBO} class(TIB_DataSet)
  33. {$ELSE} class(TDataSet)
  34. {$ENDIF}
  35.   end;
  36.  
  37.   TfrTField =
  38. {$IFDEF IBO} class(TIB_Column)
  39. {$ELSE} class(TField)
  40. {$ENDIF}
  41.   end;
  42.  
  43.   TfrTBlobField =
  44. {$IFDEF IBO} class(TIB_ColumnBlob)
  45. {$ELSE} class(TBlobField)
  46. {$ENDIF}
  47.   end;
  48.  
  49. const
  50.   frEmptyBookmark =
  51. {$IFDEF IBO} ''
  52. {$ELSE} nil
  53. {$ENDIF};
  54.  
  55. function frIsBlob(Field: TfrTField): Boolean;
  56. function frIsBookmarksEqual(DataSet: TfrTDataSet; b1, b2: TfrBookmark): Boolean;
  57. function frIsDataSet(ds: TComponent): Boolean;
  58. procedure frGetFieldNames(DataSet: TfrTDataSet; List: TStrings);
  59. function frGetBookmark(DataSet: TfrTDataSet): TfrBookmark;
  60. procedure frFreeBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
  61. procedure frGotoBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
  62. procedure frAssignBlobTo(Blob: TfrTField; Obj: TObject);
  63.  
  64.  
  65. implementation
  66.  
  67. function frIsBlob(Field: TfrTField): Boolean;
  68. begin
  69. {$IFDEF IBO}
  70.   Result := (Field <> nil) and (Field.SQLType >= 520) and (Field.SQLType <= 541);
  71. {$ELSE}
  72.   Result := (Field <> nil) and (Field.DataType in [ftBlob..ftTypedBinary]);
  73. {$ENDIF};
  74. end;
  75.  
  76. function frIsDataSet(ds: TComponent): Boolean;
  77. begin
  78. {$IFDEF IBO}
  79.   Result := ds is TIB_DataSet;
  80. {$ELSE}
  81.   Result := ds is TDataSet;
  82. {$ENDIF};
  83. end;
  84.  
  85. procedure frAssignBlobTo(Blob: TfrTField; Obj: TObject);
  86. begin
  87. {$IFDEF IBO}
  88.   Blob.AssignTo(Obj);
  89. //  TStream(Obj).Position := 0;
  90. {$ELSE}
  91.   if Obj is TPersistent then
  92.     TPersistent(Obj).Assign(Blob) else
  93.   if Obj is TStream then
  94.   begin
  95.     TfrTBlobField(Blob).SaveToStream(TStream(Obj));
  96.     TStream(Obj).Position := 0;
  97.   end;
  98. {$ENDIF}
  99. end;
  100.  
  101. {$HINTS OFF}
  102. procedure frGetFieldNames(DataSet: TfrTDataSet; List: TStrings);
  103. var
  104.   i: Integer;
  105. begin
  106. {$IFDEF IBO}
  107.   DataSet.Prepare;
  108.   DataSet.GetFieldNamesList(List);
  109.   for i := 0 to List.Count - 1 do
  110.     List[i] := Copy(List[i], pos('.', List[i]) + 1, 255);
  111. {$ELSE}
  112.   try
  113.     DataSet.GetFieldNames(List);
  114.   except;
  115.   end;
  116. {$ENDIF}
  117. end;
  118. {$HINTS ON}
  119.  
  120. function frGetBookmark(DataSet: TfrTDataSet): TfrBookmark;
  121. begin
  122. {$IFDEF IBO}
  123.   Result := DataSet.Bookmark;
  124. {$ELSE}
  125.   Result := DataSet.GetBookmark;
  126. {$ENDIF}
  127. end;
  128.  
  129. procedure frGotoBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
  130. begin
  131. {$IFDEF IBO}
  132.   DataSet.Bookmark := Bookmark;
  133. {$ELSE}
  134.   DataSet.GotoBookmark(BookMark);
  135. {$ENDIF}
  136. end;
  137.  
  138. procedure frFreeBookmark(DataSet: TfrTDataSet; Bookmark: TfrBookmark);
  139. begin
  140. {$IFNDEF IBO}
  141.   DataSet.FreeBookmark(BookMark);
  142. {$ENDIF}
  143. end;
  144.  
  145. {$HINTS OFF}
  146. function frIsBookmarksEqual(DataSet: TfrTDataSet; b1, b2: TfrBookmark): Boolean;
  147. var
  148.   n: Integer;
  149. begin
  150. {$IFDEF IBO}
  151.   Result := b1 = b2;
  152. {$ELSE}
  153.  {$IFDEF Delphi2}
  154.     dbiCompareBookmarks(DataSet.Handle, b1, b2, n);
  155.     Result := n = 0;
  156.  {$ELSE}
  157.     Result := DataSet.CompareBookmarks(b1, b2) = 0;
  158.  {$ENDIF}
  159. {$ENDIF}
  160. end;
  161. {$HINTS ON}
  162.  
  163. end.