Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2005
cocoliso cocoliso is offline
Registrado
 
Registrado: may 2005
Posts: 4
Poder: 0
cocoliso Va por buen camino
Question 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;
Responder Con Cita
  #2  
Antiguo 11-05-2005
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 11-05-2005
cocoliso cocoliso is offline
Registrado
 
Registrado: may 2005
Posts: 4
Poder: 0
cocoliso Va por buen camino
Unhappy

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
Responder Con Cita
  #4  
Antiguo 11-05-2005
Avatar de fabianbbg
fabianbbg fabianbbg is offline
Miembro
 
Registrado: ago 2003
Ubicación: Corrientes, Argentina
Posts: 80
Poder: 21
fabianbbg Va por buen camino
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
__________________
desde Corrientes, Argentina..
Cuna del Libertador de America
Responder Con Cita
  #5  
Antiguo 12-05-2005
cocoliso cocoliso is offline
Registrado
 
Registrado: may 2005
Posts: 4
Poder: 0
cocoliso Va por buen camino
Unhappy 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...-
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:39:52.


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
Copyright 1996-2007 Club Delphi