Als ik dan gegevens van een leverancier wilt ophalen en tonen in een memo, zal het er zo uitzien als je gebruik maakt van de business logica:
datamodel (datasource):
Delphi Code:
function TDMImporteren.DBHaalLeverancier(const aValue : string): TStrings;
var MyQuery : TMyQuery;
begin
MyQuery := TMyQuery.Create(nil);
Result := TStringlist.Create;
try
MyQuery.Connection := DBConnection;
with MyQuery.SQL do
begin
add('SELECT l.naam, l.straat, l.postcode, l.plaats, la.naam AS landnaam');
add('FROM leveranciers l');
add('LEFT OUTER JOIN landen la ON l.land = la.land');
add('WHERE l.leverancier = :id');
end;
Myquery.params[0].AsString := aValue;
MyQuery.Active := true;
if MyQuery.RecordCount > 0 then
begin
Result.Add(MyQuery.FieldByName('naam').AsString);
Result.Add(MyQuery.FieldByName('straat').AsString);
Result.Add(MyQuery.FieldByName('postcode').AsString);
Result.Add(MyQuery.FieldByName('plaats').AsString);
Result.Add(MyQuery.FieldByName('landnaam').AsString);
end;
MyQuery.Active := false;
finally
MyQuery.free;
end;
end;
model (unit):
Delphi Code:
function TImporteren.HaalLeverancier(const aValue : string) : boolean;
var sl : TStrings;
begin
try
sl := datamodule.DBHaalLeverancier(aValue);
if sl.Count > 0 then
begin
fLevnaam := sl[0];
fLevstraat := sl[1];
fLevpostcode := sl[2];
fLevplaats := sl[3];
fLevlandnaam := sl[4];
result := true
end else
result := false;
finally
sl.Free;
end;
end;
viewmodel (form):
Delphi Code:
procedure TFrmImporteren.ELeverancierExit(Sender: TObject);
begin
if link.HaalLeverancier(ELeverancier.text) then
begin
MMOLeverancier.lines.Add(link.Levnaam);
MMOLeverancier.lines.Add(link.Levstraat);
MMOLeverancier.lines.Add(link.Levpostcode);
MMOLeverancier.lines.Add(link.Levstraat);
MMOLeverancier.lines.Add(link.LevLandnaam);
end;
end;
Kan de logica er wel in zien. Ik kan hier in plaats van een memo een listview plaatsen en de properties uitlezen. Ik kan zelfs kiezen om Tlabels te gebruiken.
Bookmarks