PDA

Ver la Versión Completa : Parametros en firebird


BetoAlonso
15-09-2004, 17:21:56
Saludos estimados foristas

deseo saber si existe alguna manera de controlar la cantidad de parametros que envio a un SP, resulta que tengo un SP que en algunos casos va a requerir de 4 parametros y en algunos otros solo de 3 como le indico dentro del SP la tarea a realizar de acuerdo a la cantidad de parametros enviados.

gracias

mamcx
16-09-2004, 00:51:08
Aunque no conozco si hay una funcion que cuente los parametros, no es simplemente:

if Param4 EstaVacio
else

???

AGAG4
16-09-2004, 01:27:39
Yo uso esta función para mandarle los parámetros que sea, pruebalo:

function EjecProc(SP:TIBStoredProc;ParamEntrada,ParamEBusqueda,ParamResultado:String; ContResult:Byte):String;
var x,y:byte;
begin
{**Parámetros
Parámetros de Entrada, Parámetros de Busqueda, Parámetros de Salida(Resultado), Número de Resultados a Devolver}
for y:=1 to 2 do
for x:=1 to ContResult do
Resultados[x,y]:='';
sp.Prepare;
ExtraerCamposDatos(ParamEntrada,ParamEBusqueda,ParamResultado);
if ParamEntrada<>'' then begin
if c>0 then
for x:=1 to c do
if (Campox[x]<>'') and (Datox[x]<>'') then
sp.ParamByName(campox[x]).value:=Datox[x];
end;
sp.ExecProc;
if ContResult=1 then
result:=sp.ParamByName(resultx[1]).AsString
else
if sp.RecordCount =1 then begin
for x:=1 to ContResult do begin
Resultados[x,1]:=sp.ParamByName(resultx[x]).AsString;
if Resultados[x,1]='' then Resultados[x,1]:='1';
end
end else
for y:=1 to sp.RecordCount do begin
for x:=1 to ContResult do begin
Resultados[x,y]:=sp.ParamByName(resultx[x]).AsString;
if Resultados[x,y]='' then Resultados[x,y]:='1';
end;
sp.Next;
end;
end;
(***********************************************************************************


Resultados[]: Es un Arreglo de 2 dimensiones de tipo String.
ExtraerCamposDatos : Es una función que te separa los parámetros, poniendole comas(,) en las separaciones, por ejemplo:
Parametro de Entrada: Clave,Nombre,Dirección

Espero te Ayude. Sino estoy a sus ordenes.