Ik heb niet zoveel / tot geen ervaring met het gebruik van een class procedure. Nu heb ik d,m,v, verschillende documentaties dit gemaakt:
Delphi Code:
type TVulVerzend = class
strict private
class var fBatchnr : integer;
public
class procedure Execute(aMyConn : TMyConnection; aAlle : boolean; aGebruiker : integer);
class function BatchID : integer;
end;
implementation
{ TVulVerzend }
class function TVulVerzend.BatchID: integer;
begin
result := fBatchnr;
end;
class procedure TVulVerzend.Execute(aMyConn: TMyConnection; aAlle: boolean; aGebruiker: integer);
var MyQuery : TMyQuery;
MyCmd : TMyCommand;
begin
MyQuery := TMyQuery.Create(nil);
MyCmd := TMyCommand.Create(nil);
try
MyCMD.Connection := aMyConn;
with MyCMD.SQL do
begin
Add('INSERT INTO verzendinstructies');
.......
end;
MyQuery.Connection := aMyConn;
with MyQuery.SQL do
begin
add('SELECT f.snr, f.factuurdatum, f.verzendinstructie,');
......
end;
if not aAlle then
begin
MyQuery.AddWhere('f.usernr_update = :id');
MyQuery.ParamCheck;
MyQuery.Params[0].AsInteger := aGebruiker;
end;
fBatchnr := uDBBolfuncties.GetNextnumNw('batchvzID');
MyQuery.Active := true;
while not MyQuery.Eof do
begin
.....
MyQuery.Next;
end;
MyQuery.Active := false;
finally
MyQuery.Free;
MyCMD.Free;
end;
end;
Als ik deze aanroep met dit stukje code, werkt het prima:
Delphi Code:
TVulVerzend.Execute(datamodule.DBConnection, uGlobal.GetVarBool('VZ_Alle'), uGlobal.GetVarInt('VZ_gebruiker'));
showmessage(inttostr(TVulVerzend.BatchID));
Heb ik de class procedure goed geïmplementeerd, schort er een of ander nog wat aan voor verbetering?
Waarom doe ik dit. Omdat er op twee plekken deze gegevens gevuld kunnen worden. Dan hoef ik maar 1 procedure te gebruiken en toch mijn info krijgen.
Bookmarks