PDA

Ver la Versión Completa : SIN VALOR DE RETORNOS ADOStoredProc1?


danytorres
13-05-2003, 21:57:32
Hola a todos. El problepa que tengo es que realizo Update en Sql que se conecta a dos tabla

Codigo del Update
---------------------------------------------------------------------------------
UPDATE PRPG

SET PRPG.Estado = 'SAL'

FROM PRPG INNER JOIN
RPG ON PRPG.Rpg = RPG.Codigo

WHERE (RPG.Destino = 'CCS') AND (PRPG.Estado = 'ENT')
---------------------------------------------------------------------------------

Cuando lo conecto al ADOStoredProc y le doy valores a los parametros el me pide un valor de retorno pero en mi Update
no tengo un SELECT(introduscu un select, meda error, )

como hago para que el ADOStoredProc no me pida un valor ed retorno. agradesco la ayuda
________________________________

un saludo...

guillotmarc
14-05-2003, 11:25:18
Hola.

¿ Lo estás ejecutando con un Open ?. En ese caso, ejecutalo con un ExecProc.

Saludos.

danytorres
14-05-2003, 13:16:47
E l problema es que el componente no me deja nisiquiera activarto cuando le doy true a la propiedad Active me da un mensaje de Error que dice que no existe valor de retorno. y no existe por que es solo una actualizacion pero cuando le coloco
el selec
code

Update

Set
select (agrego un selet en la sentencia sql)
from
where

el detalle esta que la sentencia Sql al colocarle un select no funciona pero como hago si el Storedproc me pide un valor de retorno el los parametros(Estan los de entrada y me pide el de salida que el lo declara como @RetunResul).

Que hago agradesco que me hayuden gracias

guillotmarc
14-05-2003, 17:41:34
Hola.

Activar un procedimiento almacenado, es como hacer un Open en tiempo de diseño. Cosa que no tiene sentido en un procedimiento almacenado que solo devuelve valores en parámetros, y no un dataset.

Es normal que te dé ese error al intentar poner con Active a True, de la misma forma que es normal que te dé el error si haces un Open (en ambos casos el componente espera que se devuelva un dataset, cosa que no ocurre). Otra cosa sería que en tiempo de ejecución llames al método ExecProc y te dé un error ¿ es este el caso ?

Saludos.

danytorres
14-05-2003, 22:58:22
Mil gracias por responder guillotmarc.

Utilice el ExecProc en procedimiento almacenado pero me de error
pidiendo un valor de retorno el codigo que utilizo es el siguiente

-----------------------------------------------------------------------------------
Datamodule1.QActualizarsalida.ExecProc;
Datamodule1.QActualizarsalida.Close;
Datamodule1.QActualizarsalida.Parameters
[1].Value:=Datamodule1.RtdRdt.Value;
Datamodule1.QActualizarsalida.Parameters[2].Value:=ComboBox2.text;
Datamodule1.QActualizarsalida.Open;
-----------------------------------------------------------------------------------

donde introduzco dos paremetros pero igual me pide el retorno.

El mesaje de error es el siguinte (Commandtexl dose not return a result set)

agradeceria que me ayuden.
______________________________________

Un saludo....

guillotmarc
15-05-2003, 11:54:23
Hola.

El ExecProc no es para preparar el procedimiento almacenado, sinó para ejecutarlo. El código debería ser :


// Este código es incorrecto, lo quitamos

// Datamodule1.QActualizarsalida.ExecProc;
// Datamodule1.QActualizarsalida.Close;

// Ponemos los parámetros de Entrada

Datamodule1.QActualizarsalida.Parameters[1].Value:=Datamodule1.RtdRdt.Value;
Datamodule1.QActualizarsalida.Parameters[2].Value:=ComboBox2.text;

// Cambiamos el Open por ExecProc

Datamodule1.QActualizarsalida.ExecProc;

// Finalmente podemos recoger los parámetros de Salida (si es necesario)

ShowMessage(IntToStr(QActualizarsalida.Parameters[3].Value));


Saludos.

danytorres
15-05-2003, 14:35:31
Gracias, guillotmarc por la ayuda que me diste solucione el problema sastifactoriamente.
-------------------------------------------

Un saludo... :D