Y dónde estas creando el parámetro
'_TERMINAL'?
Lo que esta diciendo es que el componente TZStoredProc no tiene ningun parámetro creado por lo que no se puede acceder a ninguno.
Quisas deberías crearlo en tiempo de ejecución algo asi:
Código Delphi
[-]procedure TForm1.Button3Click(Sender: TObject);
var SProc:TZStoredProc;
begin
SProc:= TZStoredProc.Create(Self);
try
SProc.Connection := dm.Conecta;
Sproc.StoredProcName:= 'SP_EJECUTA_XXX_YYY_ZZZ';
Sproc.Params.CreateParam(ftString,'_TERMINAL',ptInput); Sproc.Active:= False; Sproc.Params[0].AsString:= QuotedStr(gs_terminal); Sproc.ExecProc;
finally
SProc.Free; end;
end;
Sin olvidar que cuando creas un
objeto debes eliminarlo cuando ya no lo necesites para no tener memoria reservado sin estar ocupandose.
.
Por si acaso en lo personal ami no megusta usar el componente
TZStoredProc en su lugar yo uso un
TZQuery y en su propiedad
SQL llamo a mi procedimiento almacenado; en tu caso sería mas o menos asi:
Código Delphi
[-] procedure TForm1.Button4Click(Sender: TObject);
var MyQuery:TZQuery;
begin
MyQuery:=TZQuery.Create(Application);
try
MyQuery.Connection:=dm.Conecta;
MyQuery.SQL.Text:='Call SP_EJECUTA_XXX_YYY_ZZZ();';
MyQuery.SQL.Text:='Call SP_EJECUTA_XXX_YYY_ZZZ(:Parametro1,:Parametro2);';
MyQuery.ParamByName('Parametro1').AsString:=Lo_que_Sea;
...
...
MyQuery.Open;
finally
MyQuery.Free;
end;
end;
Espero que te sea de utilidad.
Saludos...