Wel, die maak ik met mijn pre-builder ahv een sql file:
Dit staat in sql-file Dmo.Klant.Classes.sql
Code:
[TQryKlant]
select
k.*
from
klant k
where
k.actief >= :actief
order by
k.klantnaam
En de pre-builder maakt ahv een database de volgende unit aan, door de sql gewoon uit te voeren (met enige restricties). Heel aardige bijkomstig voordeel is dat ik DataSet.Veld kan gebruiken.
QryKlant.Naam.Value := 'Eric';
En dat ik echt OOP kan werken. En private datasets kan gebruiken (in plaats van alles published in een .dfm).
Code:
unit Dmo.Klant.Classes;
interface
uses System.Classes, Data.DB, Data.SqlTimSt, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Comp.DataSet, FireDAC.Comp.Client;
type
TQryKlant = class(TFDQuery)
public
const _sql: ansistring =
'select' + sLineBreak +
' k.*' + sLineBreak +
'from' + sLineBreak +
' klant k' + sLineBreak +
'where' + sLineBreak +
' k.actief >= :actief' + sLineBreak +
'order by' + sLineBreak +
' k.klantnaam';
constructor Create(aOwner: TComponent); override;
public
ID : TIntegerField;
ACTIEF : TBooleanField;
KLANTNUMMER : TIntegerField;
AANHEF : TWideStringField;
KLANTNAAM : TWideStringField;
ADRES : TWideStringField;
POSTCODE : TWideStringField;
PLAATS : TWideStringField;
MAIL : TWideStringField;
LESSENPERJAAR : TIntegerField;
LESDAG : TIntegerField;
LESTIJD : TTimeField;
LESMINUTEN : TIntegerField;
BEDRAG : TCurrencyField;
KORTING : TCurrencyField;
MOBIEL : TWideStringField;
TELEFOON : TWideStringField;
INFO : TWideMemoField;
TENAAMSTELLING : TWideStringField;
BANKREKENING : TWideStringField;
INCASSO : TBooleanField;
PERIODIEKEFACTUUR : TBooleanField;
BETALERNAAM : TWideStringField;
FACTUURSJABLOON_ID : TIntegerField;
ParamACTIEF: TFDParam; // Boolean
end;
implementation
constructor TQryKlant.Create(aOwner: TComponent);
begin
inherited;
ResourceOptions.ParamCreate := False;
Fields.LifeCycles := [lcPersistent];
SQL.Text := string(_sql);
ID := TIntegerField.Create(Self);
with ID do begin
FieldName := 'ID';
ProviderFlags := [pfInUpdate,pfInWhere,pfInKey];
Required := True;
DataSet := Self;
end;
ACTIEF := TBooleanField.Create(Self);
with ACTIEF do begin
FieldName := 'ACTIEF';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := True;
DataSet := Self;
end;
KLANTNUMMER := TIntegerField.Create(Self);
with KLANTNUMMER do begin
FieldName := 'KLANTNUMMER';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := True;
DataSet := Self;
end;
AANHEF := TWideStringField.Create(Self);
with AANHEF do begin
FieldName := 'AANHEF';
Size := 64;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
KLANTNAAM := TWideStringField.Create(Self);
with KLANTNAAM do begin
FieldName := 'KLANTNAAM';
Size := 64;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
ADRES := TWideStringField.Create(Self);
with ADRES do begin
FieldName := 'ADRES';
Size := 64;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
POSTCODE := TWideStringField.Create(Self);
with POSTCODE do begin
FieldName := 'POSTCODE';
Size := 16;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
PLAATS := TWideStringField.Create(Self);
with PLAATS do begin
FieldName := 'PLAATS';
Size := 64;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
MAIL := TWideStringField.Create(Self);
with MAIL do begin
FieldName := 'MAIL';
Size := 64;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
LESSENPERJAAR := TIntegerField.Create(Self);
with LESSENPERJAAR do begin
FieldName := 'LESSENPERJAAR';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
LESDAG := TIntegerField.Create(Self);
with LESDAG do begin
FieldName := 'LESDAG';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
LESTIJD := TTimeField.Create(Self);
with LESTIJD do begin
FieldName := 'LESTIJD';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
LESMINUTEN := TIntegerField.Create(Self);
with LESMINUTEN do begin
FieldName := 'LESMINUTEN';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
BEDRAG := TCurrencyField.Create(Self);
with BEDRAG do begin
FieldName := 'BEDRAG';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
KORTING := TCurrencyField.Create(Self);
with KORTING do begin
FieldName := 'KORTING';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
MOBIEL := TWideStringField.Create(Self);
with MOBIEL do begin
FieldName := 'MOBIEL';
Size := 16;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
TELEFOON := TWideStringField.Create(Self);
with TELEFOON do begin
FieldName := 'TELEFOON';
Size := 16;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
INFO := TWideMemoField.Create(Self);
with INFO do begin
FieldName := 'INFO';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DisplayValue := dvFull;
DataSet := Self;
end;
TENAAMSTELLING := TWideStringField.Create(Self);
with TENAAMSTELLING do begin
FieldName := 'TENAAMSTELLING';
Size := 64;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
BANKREKENING := TWideStringField.Create(Self);
with BANKREKENING do begin
FieldName := 'BANKREKENING';
Size := 32;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
INCASSO := TBooleanField.Create(Self);
with INCASSO do begin
FieldName := 'INCASSO';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := True;
DataSet := Self;
end;
PERIODIEKEFACTUUR := TBooleanField.Create(Self);
with PERIODIEKEFACTUUR do begin
FieldName := 'PERIODIEKEFACTUUR';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := True;
DataSet := Self;
end;
BETALERNAAM := TWideStringField.Create(Self);
with BETALERNAAM do begin
FieldName := 'BETALERNAAM';
Size := 64;
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
FACTUURSJABLOON_ID := TIntegerField.Create(Self);
with FACTUURSJABLOON_ID do begin
FieldName := 'FACTUURSJABLOON_ID';
ProviderFlags := [pfInUpdate,pfInWhere];
Required := False;
DataSet := Self;
end;
ParamACTIEF := Params.Add('ACTIEF',ftBoolean, 0, ptInput);
end;
end.
Bookmarks