TDataViewSourceEDBUpdateAdd - Exemples
| TDataViewSourceEDBUpdateAdd = class (TDataViewSourceExternalDB) | Interface de TDataViewSourceEDBUpdateAdd | Exemples de TDataViewSourceEDBUpdateAdd |
Nous prendrons dans notre exemple le cas d'une base de données externe avec une table DATA défini comme suit :
| Nom du champ | Type du champ |
| TheDate | Date |
| year | entier |
| month | entier |
| day | entier |
| hour | entier |
| minute | entier |
| seconde | entier |
unit MyExternalDB;
interface
uses QubesDataViewsSources.ExternalDB, QubesDataViews;
type
TDataViewSourceExternalDBTime = class(TDataViewSourceEDBUpdateAdd)
public
constructor Create(driver: String; parameters: array of string);
function Restart(dataView: TDataView): string; override;
function Update(dataView: TDataView; checkpoint: string): string; override;
end;
implementation
uses SysUtils;
constructor TDataViewSourceExternalDBTime.Create(driver: String; parameters: array of string);
begin
inherited Create(driver, parameters);
FFieldsDef.Add('TheDate=TheDate');
FFieldsDef.Add('year=year');
FFieldsDef.Add('month=month');
FFieldsDef.Add('day=day');
FFieldsDef.Add('hour=hour');
FFieldsDef.Add('minute=minute');
FFieldsDef.Add('seconde=seconde');
FFieldsType.Add(ftFloat, ftInteger, ftInteger, ftInteger, ftInteger, ftInteger, ftInteger);
end;
function TDataViewSourceExternalDBTime.Restart(dataView: TDataView): string;
var
select : array of String;
begin
for var i:=0 to dataView.Fields.Count-1 do begin
select.Add(FFieldsDef.Values[dataView.FieldsSource[i]]);
end;
var q := 'select '+select.Join(',')+' from DATA order by '+dataView.PKFieldFormula;
var dataSet := FDataBase.Query(q);
Result := RestartDataView(dataView, dataSet);
end;
function TDataViewSourceExternalDBTime.Update(dataView: TDataView; checkpoint: string): string;
var
select : array of String;
begin
for var i:=0 to dataView.Fields.Count-1 do
select.Add(FFieldsDef.Values[dataView.FieldsSource[i]]);
var dataSet := FDataBase.Query('select '+select.Join(',')+' from DATA where '+dataView.PKFieldFormula+'>:checkpoint order by '+dataView.PKFieldFormula,[StrToFloat(checkpoint)]);
Result := UpdateDataView(dataView, dataSet);
if Result ='' then Result := checkpoint;
end;
interface
uses QubesDataViewsSources.ExternalDB, QubesDataViews;
type
TDataViewSourceExternalDBTime = class(TDataViewSourceEDBUpdateAdd)
public
constructor Create(driver: String; parameters: array of string);
function Restart(dataView: TDataView): string; override;
function Update(dataView: TDataView; checkpoint: string): string; override;
end;
implementation
uses SysUtils;
constructor TDataViewSourceExternalDBTime.Create(driver: String; parameters: array of string);
begin
inherited Create(driver, parameters);
FFieldsDef.Add('TheDate=TheDate');
FFieldsDef.Add('year=year');
FFieldsDef.Add('month=month');
FFieldsDef.Add('day=day');
FFieldsDef.Add('hour=hour');
FFieldsDef.Add('minute=minute');
FFieldsDef.Add('seconde=seconde');
FFieldsType.Add(ftFloat, ftInteger, ftInteger, ftInteger, ftInteger, ftInteger, ftInteger);
end;
function TDataViewSourceExternalDBTime.Restart(dataView: TDataView): string;
var
select : array of String;
begin
for var i:=0 to dataView.Fields.Count-1 do begin
select.Add(FFieldsDef.Values[dataView.FieldsSource[i]]);
end;
var q := 'select '+select.Join(',')+' from DATA order by '+dataView.PKFieldFormula;
var dataSet := FDataBase.Query(q);
Result := RestartDataView(dataView, dataSet);
end;
function TDataViewSourceExternalDBTime.Update(dataView: TDataView; checkpoint: string): string;
var
select : array of String;
begin
for var i:=0 to dataView.Fields.Count-1 do
select.Add(FFieldsDef.Values[dataView.FieldsSource[i]]);
var dataSet := FDataBase.Query('select '+select.Join(',')+' from DATA where '+dataView.PKFieldFormula+'>:checkpoint order by '+dataView.PKFieldFormula,[StrToFloat(checkpoint)]);
Result := UpdateDataView(dataView, dataSet);
if Result ='' then Result := checkpoint;
end;