bufdatasettoolsunit.pas 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. unit BufDatasetToolsUnit;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, toolsunit,
  6. db,
  7. BufDataset;
  8. type
  9. { TbufdatasetConnector }
  10. TbufdatasetDBConnector = class(TDBConnector)
  11. protected
  12. procedure CreateNDatasets; override;
  13. procedure CreateFieldDataset; override;
  14. procedure DropNDatasets; override;
  15. procedure DropFieldDataset; override;
  16. Function InternalGetNDataset(n : integer) : TDataset; override;
  17. Function InternalGetFieldDataset : TDataSet; override;
  18. end;
  19. implementation
  20. { TbufdatasetDBConnector }
  21. procedure TbufdatasetDBConnector.CreateNDatasets;
  22. begin
  23. // All datasets only exist in memory, so nothing has to be done
  24. end;
  25. procedure TbufdatasetDBConnector.CreateFieldDataset;
  26. begin
  27. // All datasets only exist in memory, so nothing has to be done
  28. end;
  29. procedure TbufdatasetDBConnector.DropNDatasets;
  30. begin
  31. // All datasets only exist in memory, so nothing has to be done
  32. end;
  33. procedure TbufdatasetDBConnector.DropFieldDataset;
  34. begin
  35. // All datasets only exist in memory, so nothing has to be done
  36. end;
  37. function TbufdatasetDBConnector.InternalGetNDataset(n: integer): TDataset;
  38. var BufDataset : TBufDataset;
  39. i : integer;
  40. begin
  41. BufDataset := TBufDataset.Create(nil);
  42. BufDataset.FieldDefs.Add('ID',ftInteger);
  43. BufDataset.FieldDefs.Add('NAME',ftString,50);
  44. BufDataset.CreateDataset;
  45. BufDataset.Open;
  46. for i := 1 to n do
  47. begin
  48. BufDataset.Append;
  49. BufDataset.FieldByName('ID').AsInteger := i;
  50. BufDataset.FieldByName('NAME').AsString := 'TestName' + inttostr(i);
  51. BufDataset.Post;
  52. end;
  53. BufDataset.Close;
  54. Result := BufDataset;
  55. end;
  56. function TbufdatasetDBConnector.InternalGetFieldDataset : TDataSet;
  57. var BufDataset : TBufDataset;
  58. i : integer;
  59. begin
  60. BufDataset := TBufDataset.Create(nil);
  61. with BufDataset do
  62. begin
  63. //todo: this is based on memds.
  64. //check and add bufdataset supported fields
  65. FieldDefs.Add('ID',ftInteger);
  66. FieldDefs.Add('FSTRING',ftString,10);
  67. FieldDefs.Add('FSMALLINT',ftSmallint);
  68. FieldDefs.Add('FINTEGER',ftInteger);
  69. // FieldDefs.Add('FWORD',ftWord);
  70. FieldDefs.Add('FBOOLEAN',ftBoolean);
  71. FieldDefs.Add('FFLOAT',ftFloat);
  72. // FieldDefs.Add('FCURRENCY',ftCurrency);
  73. // FieldDefs.Add('FBCD',ftBCD);
  74. FieldDefs.Add('FDATE',ftDate);
  75. FieldDefs.Add('FTIME',ftTime);
  76. FieldDefs.Add('FDATETIME',ftDateTime);
  77. FieldDefs.Add('FLARGEINT',ftLargeint);
  78. CreateDataset;
  79. Open;
  80. for i := 0 to testValuesCount-1 do
  81. begin
  82. Append;
  83. FieldByName('ID').AsInteger := i;
  84. FieldByName('FSTRING').AsString := testStringValues[i];
  85. FieldByName('FSMALLINT').AsInteger := testSmallIntValues[i];
  86. FieldByName('FINTEGER').AsInteger := testIntValues[i];
  87. FieldByName('FBOOLEAN').AsBoolean := testBooleanValues[i];
  88. FieldByName('FFLOAT').AsFloat := testFloatValues[i];
  89. ShortDateFormat := 'yyyy-mm-dd';
  90. FieldByName('FDATE').AsDateTime := StrToDate(testDateValues[i]);
  91. FieldByName('FLARGEINT').AsLargeInt := testLargeIntValues[i];
  92. Post;
  93. end;
  94. Close;
  95. end;
  96. Result := BufDataset;
  97. end;
  98. initialization
  99. RegisterClass(TbufdatasetDBConnector);
  100. end.