PDA

Ver la Versión Completa : Cambio de Stored Procedure


Juanito-Kun
25-05-2005, 00:21:19
Hola otra ves :cool: ..

TEngo el siguiente problema:

Tengo un Objeto ADOStoredProc el cual manejo para hacer todas mis operaciones(Insert, Update, Delete)... lo que quiero hacer es hacer el cambio de stored procedure cuando sea el caso..


utilizo lo siguiente:
//Borro los parametro(eso piendo):confused:
ADOStoredProc2.Parameters.Clear;
//Coloco el nuevo Stored procedure :confused:
ADOStoredProc2.ProcedureName:=('update_Grupo_1;1');
//Asigno valores a los parametros
ADOStoredProc2.Parameters.ParamValues['@id_1']:=StrToInt(Edit1.Text);
ADOStoredProc2.Parameters.ParamValues['@Grado_2']:=Edit2.Text;
ADOStoredProc2.Parameters.ParamValues['@Grupo_3']:=Edit3.Text;
///Ejecuto el Proceso.
ADOStoredProc2.ExecProc;

Esto es lo que hago despues de hacer un insert... osea inserto y si quiero actualizar otro campo cambio del stored procedure me marca: que no encontro los parametro.. diganme que estoy haciendo mal :D:p

de ante mano Gracias!!:D

lgarcia
25-05-2005, 00:47:57
Hola

Me parece que lo que te falta es la sentencia Prepared:= True; que va antes de ejecutarlo (ExecProc). Para que tu codigo sea mas compacto por que no utilizas el with StoredProcedure y te ahorras mucho codigo.

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer

Juanito-Kun
25-05-2005, 01:38:40
Tanks por responder... perdona mi ignorancia... pero como utilizo el With en esto.. me podrias decir...

Gracias !! :D

Juanito-Kun
25-05-2005, 02:52:02
Ok, lo hice con el with.. quedo asi:

with ADOStoredProc2 do
begin
Parameters.Clear;
ProcedureName:=('ActualizarGru;1');
Parameters.ParamValues['@ID']:=StrToInt(Edit1.Text);
Parameters.ParamValues['@Grado']:=Edit2.Text;
Parameters.ParamValues['@Grupo']:=Edit3.Text;
Prepared:=True;
ExecProc;
end;

pero me sigue marcando el mismo error, que no encuentra los parametros... :(

lgarcia
25-05-2005, 15:28:57
Hola

Nunca he trabajado usando la propiedad ProcedureName pasandole el nombre del SP en tiempo de ejecucion, hice una prueba y me da el mismo error que a ti. Pero se que se puede hacer porque yo he visto a un colega mio realizar esa operacion. Seguire buscando.

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer

Juanito-Kun
26-05-2005, 00:14:25
Bueno al parecer solo faltaba la instruccion para refrescar los paremetros :p

with ADOStoredProc2 do
begin
Parameters.Clear;
ProcedureName:=('ActualizarGru;1');
Prepared:=True;

Parameters.Refresh;

Parameters.ParamValues['@ID']:=StrToInt(Edit1.Text);
Parameters.ParamValues['@Grado']:=Edit2.Text;
Parameters.ParamValues['@Grupo']:=Edit3.Text;
ExecProc;
end;
ADODataSet1.Refresh;
end;

Con esto me funciono todo bien, me cambia el Stored procedure con sus parametros corespondientes.

Gracias a todos!!! y saludos :D

Juanito-Kun
30-05-2005, 17:24:45
Oks, disculpen..

EL ultimo codigo me dio algunos problemas. cuando lo ejecutaba por segunda ves...

el codigo que les menciono ahora es el que estoy usando en la aplicacion y funciona excelente::D

dmConocimiento.AdoOpePre2.Parameters.Clear;
dmConocimiento.AdoOpePre2.ProcedureName:=('ActualizarPre;1');
dmConocimiento.AdoOpePre2.Parameters.Refresh;
dmConocimiento.AdoOpePre2.Parameters.ParamValues['@ID']:=StrToInt(EID.Text);
dmConocimiento.AdoOpePre2.Parameters.ParamValues['@TipoT']:=StrToInt(ETema.Text);
dmConocimiento.AdoOpePre2.Parameters.ParamValues['@descripcion']:=EDescripcion.Text;
dmConocimiento.AdoOpePre2.Parameters.ParamValues['@Estado']:=StrToInt(EEstado.Text);
dmConocimiento.AdoOpePre2.Parameters.ParamValues['@Responsable']:=Eresponsable.Text;
dmConocimiento.AdoOpePre2.Parameters.ParamValues['@Fecha']:=StrToDate(EFecha.Text);
dmConocimiento.AdoOpePre2.ExecProc;
dmConocimiento.AdoConPre.Refresh;

Saludos!!! :p