Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   cargar un EDIT con el resultado de un AdoStoredProc (https://www.clubdelphi.com/foros/showthread.php?t=21228)

cocoliso 10-05-2005 23:27:27

cargar un EDIT con el resultado de un AdoStoredProc
 
Hola a todos,soy nuevo en delphi también.
Estoy usando la versión 7 y tengo un simple procedimiento almacenado en Sql Server que me tiene que devolver solamente un NOMBRE y ese resultado..quiero ponerlo en un EDIT, como sería la sintaxis?? - Muchas Gracias !!

Este es mi codigo.., pero...evidentemente..no esta bien..

procedure TForm1.Button4Click(Sender: TObject);
begin
with ADOStoredProc2 do
begin
try
Parameters.ParamValues ['@id']:= StrToInt(Edit3.Text);
Prepared:=true;
ExecProc;
except
on E:exception do
showmessage('Ha ocurrido un error: ' +e.Message);
end;
DataSource1.DataSet.Active:= True;
edit3.Text:= ADOStoredProc2.Parameters.ParamValues['@RETURN_VALUE'];
end;

lgarcia 11-05-2005 01:21:56

Cargar un edit con el resultado de un SP
 
Hola

Del analisis de tu codigo veo que para que un SP te devuelva algo debe tener Output en la declaracion del mismo en SQL Server, en el caso de que tu quieras que te devuelva un select no debes usar las sentencias:
Prepared:= True;
ExecProc;
Ya que las mismas se utilizan en procedimientos de insercion, eliminacion y actualizacion, cuando lo que tu quieres es obtener una consulta solo debes
Close;
Open;
y si el procedimiento lleva parametros va entre el Close y el Open
En este caso el valor que debes sacar en el Edit es un campo del procedimiento almacenado y lo puedes obtener
edit3.Text:= ADOStoredProc2.Parameters.ParamValues['@tucampo'];

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer

cocoliso 11-05-2005 06:35:18

Gracias lgarcia...- Aún no termino...de resolver el problema..., pero las sugerencias que me diste..me acotaron la busqueda...

Efectivamente..mi procedimiento almacenado es como decias, este es el codigo:
---------------------------------------------------------------------
CREATE PROCEDURE sp_prueba_consul1
@id int,
@nombresel varchar(50) output

AS
BEGIN
SELECT
@nombresel = nombre FROM prueba WHERE id = @id

END
GO
---------------------------------------------------------------------
y este es mi codigo modificado según me indicaste:

procedure TForm1.Button4Click(Sender: TObject);
begin
try
with ADOStoredProc2 do
begin
Open;
Parameters.ParamValues ['@id']:= StrToInt(Edit3.Text);
end;
DataSource1.DataSet.Active:= True;
edit4.Text:= ADOStoredProc2.Parameters.ParamValues['@nombresel'];
ADOStoredProc2.close;
except
on E:exception do
showmessage('Ha ocurrido un error: ' +e.Message);
end;
end;
--------------------------------------------------------------------

Pero cuando lo ejecuto y la paso el parametro ID para que me devuelva el nombre me dice el error : AdoStoredProc2: CommandText Does Not Return a Result Set - que puede ser???

Muchas Gracias

fabianbbg 11-05-2005 21:36:18

Re:cargar un EDIT con el resultado de un AdoStoredProc
 
Estimado Cocoliso:

¿Intentaste colocar el SP asi?

Código:

CREATE PROCEDURE TraerNombre @Id Smallint    AS
BEGIN
SELECT Tabla.Nombre
FROM Tabla
WHERE Tabla.Id=@Id

END
GO

(Si solo queres traer el nombre)
Luego en el codigo de tu programa, con el componente TADOStoredProc (sp)
Código:

sp.Close;
sp.Parameters.ParamByName('@Id').Value:=1;//supongo es el id que buscas
sp.Open;

Lo que si , tenes que conectar el componente a un TDatasource y este a un DBEdit, pero eso ya lo sabes..

Tambien si queres referenciar al nombre de un campo desde el código , es mas comodo si lo levanta el componente en tiempo de diseño:
Haciendo doble clic sobre el componente y luego boton derecho "add all fields"

Espero haberte sido de ayuda cualquier cosa pregunta de nuevo sin dudar..
saludos

cocoliso 12-05-2005 04:06:25

no sale
 
Fabian:
existe alguna diferencia en poner en los SP del sql server TABLA.CAMPO ?

SELECT Tabla.Nombre FROM Tabla WHERE Tabla.Id=@Id

Estaba viendo..que...depende como devuelvas...las variables OUTPUT desde el sql server al delphi por ahi no le gusta..., varia si solo le asigas a una variable que si devolves con return...

Mas de todas formas...el codigo que esta ahi arriba es lo mejor que pude sacar...- Para un programador de toda su vida de visual basic..no me resulta muy obvio muchos conceptos...delphi...-


La franja horaria es GMT +2. Ahora son las 01:26:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi