|
@@ -0,0 +1,118 @@
|
|
|
+unit BufDatasetToolsUnit;
|
|
|
+
|
|
|
+{$mode objfpc}{$H+}
|
|
|
+
|
|
|
+interface
|
|
|
+
|
|
|
+uses
|
|
|
+ Classes, SysUtils, toolsunit,
|
|
|
+ db,
|
|
|
+ BufDataset;
|
|
|
+
|
|
|
+type
|
|
|
+{ TbufdatasetConnector }
|
|
|
+ TbufdatasetDBConnector = class(TDBConnector)
|
|
|
+ protected
|
|
|
+ procedure CreateNDatasets; override;
|
|
|
+ procedure CreateFieldDataset; override;
|
|
|
+ procedure DropNDatasets; override;
|
|
|
+ procedure DropFieldDataset; override;
|
|
|
+ Function InternalGetNDataset(n : integer) : TDataset; override;
|
|
|
+ Function InternalGetFieldDataset : TDataSet; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+implementation
|
|
|
+
|
|
|
+{ TbufdatasetDBConnector }
|
|
|
+
|
|
|
+procedure TbufdatasetDBConnector.CreateNDatasets;
|
|
|
+begin
|
|
|
+// All datasets only exist in memory, so nothing has to be done
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TbufdatasetDBConnector.CreateFieldDataset;
|
|
|
+begin
|
|
|
+// All datasets only exist in memory, so nothing has to be done
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TbufdatasetDBConnector.DropNDatasets;
|
|
|
+begin
|
|
|
+// All datasets only exist in memory, so nothing has to be done
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TbufdatasetDBConnector.DropFieldDataset;
|
|
|
+begin
|
|
|
+// All datasets only exist in memory, so nothing has to be done
|
|
|
+end;
|
|
|
+
|
|
|
+function TbufdatasetDBConnector.InternalGetNDataset(n: integer): TDataset;
|
|
|
+var BufDataset : TBufDataset;
|
|
|
+ i : integer;
|
|
|
+
|
|
|
+begin
|
|
|
+ BufDataset := TBufDataset.Create(nil);
|
|
|
+ BufDataset.FieldDefs.Add('ID',ftInteger);
|
|
|
+ BufDataset.FieldDefs.Add('NAME',ftString,50);
|
|
|
+ BufDataset.CreateDataset;
|
|
|
+ BufDataset.Open;
|
|
|
+ for i := 1 to n do
|
|
|
+ begin
|
|
|
+ BufDataset.Append;
|
|
|
+ BufDataset.FieldByName('ID').AsInteger := i;
|
|
|
+ BufDataset.FieldByName('NAME').AsString := 'TestName' + inttostr(i);
|
|
|
+ BufDataset.Post;
|
|
|
+ end;
|
|
|
+ BufDataset.Close;
|
|
|
+ Result := BufDataset;
|
|
|
+end;
|
|
|
+
|
|
|
+function TbufdatasetDBConnector.InternalGetFieldDataset : TDataSet;
|
|
|
+
|
|
|
+
|
|
|
+var BufDataset : TBufDataset;
|
|
|
+ i : integer;
|
|
|
+
|
|
|
+begin
|
|
|
+ BufDataset := TBufDataset.Create(nil);
|
|
|
+ with BufDataset do
|
|
|
+ begin
|
|
|
+ //todo: this is based on memds.
|
|
|
+ //check and add bufdataset supported fields
|
|
|
+ FieldDefs.Add('ID',ftInteger);
|
|
|
+ FieldDefs.Add('FSTRING',ftString,10);
|
|
|
+ FieldDefs.Add('FSMALLINT',ftSmallint);
|
|
|
+ FieldDefs.Add('FINTEGER',ftInteger);
|
|
|
+// FieldDefs.Add('FWORD',ftWord);
|
|
|
+ FieldDefs.Add('FBOOLEAN',ftBoolean);
|
|
|
+ FieldDefs.Add('FFLOAT',ftFloat);
|
|
|
+// FieldDefs.Add('FCURRENCY',ftCurrency);
|
|
|
+// FieldDefs.Add('FBCD',ftBCD);
|
|
|
+ FieldDefs.Add('FDATE',ftDate);
|
|
|
+ FieldDefs.Add('FTIME',ftTime);
|
|
|
+ FieldDefs.Add('FDATETIME',ftDateTime);
|
|
|
+ FieldDefs.Add('FLARGEINT',ftLargeint);
|
|
|
+ CreateDataset;
|
|
|
+ Open;
|
|
|
+ for i := 0 to testValuesCount-1 do
|
|
|
+ begin
|
|
|
+ Append;
|
|
|
+ FieldByName('ID').AsInteger := i;
|
|
|
+ FieldByName('FSTRING').AsString := testStringValues[i];
|
|
|
+ FieldByName('FSMALLINT').AsInteger := testSmallIntValues[i];
|
|
|
+ FieldByName('FINTEGER').AsInteger := testIntValues[i];
|
|
|
+ FieldByName('FBOOLEAN').AsBoolean := testBooleanValues[i];
|
|
|
+ FieldByName('FFLOAT').AsFloat := testFloatValues[i];
|
|
|
+ ShortDateFormat := 'yyyy-mm-dd';
|
|
|
+ FieldByName('FDATE').AsDateTime := StrToDate(testDateValues[i]);
|
|
|
+ FieldByName('FLARGEINT').AsLargeInt := testLargeIntValues[i];
|
|
|
+ Post;
|
|
|
+ end;
|
|
|
+ Close;
|
|
|
+ end;
|
|
|
+ Result := BufDataset;
|
|
|
+end;
|
|
|
+
|
|
|
+initialization
|
|
|
+ RegisterClass(TbufdatasetDBConnector);
|
|
|
+end.
|
|
|
+
|