PDA

Ver la Versión Completa : Delphi Procedimiento almacenado sql server


amerika111
31-12-2009, 22:33:20
hola a todos.... ya cuenta regresiva para el 2010... bueno al punto jeje
mi duda es la siguiente tengo un procedimiento almacenado en sql que selecciona una serie de campos de acuerdo a un condicion .... y si funciona y todo en sql pero el caso es que no tengo idea de como llamarlo en el delphi ,,
estube viendo que ocupo un componente ADOstoredproc y configurar lo que es el connection y el procedimiento al que se va a ligar en la procedurename ... y ahora no se como llamarlo en el codigo no se si me podrian auxiliar en eso..

este es mi procedimiento en slq server
CREATE PROCEDURE spConsultaExpedientes(@Cuenta AS varchar(20))
AS
BEGIN
SELECT E.Cuenta,
E.NombreNegocio,
E.DomicilioNegocio,
E.ColoniaNegocio,
E.Denominado,
TP.Permiso,
G.Giro,
S.Status,
Z.Zona,
E.FechaApertura,
E.FechaSenialamiento,
E.FechaUltimoPago

FROM
(laExpediente E LEFT JOIN laZona Z ON E.idZona=Z.idzona)
LEFT JOIN laStatus S ON S.idStatus=E.idStatus
LEFT JOIN laSenialamiento ON laSenialamiento.Cuenta=E.Cuenta
LEFT JOIN laTipoPermiso TP ON TP.idTipoPermiso=E.idTipoPermiso
LEFT JOIN laGiro G ON G.idGiro=E.idGiro
WHERE
E.Cuenta=@Cuenta
END


y en delphi quiereo mandarlo llamar y que lo que seleccione lo coloque respectivamente en unos edit (textbox)

amerika111
01-01-2010, 09:21:52
Aun nadie se ha animado a contestar .... a ya me revolvi segun lo q he visto las variables en delphi para que las reconosca son :campo pero en sql son @campo entonces si para grabar el procedimiento almacenado(sp) en sql afuerzas tiene que declararse los parametros con @campo as varchar(10) entonces si el procedimiento esta guardado asi si lo reconoce el delphi cuando se utiliza el ADOstoredProc ..
lo que hice fue lo siguiente coloque un ADOstoredProc y en connection puse la que ado que tengo y en procedurename seleccione el de sql

y no pasa nada me salen errores por que el valor del parametro lo puse 0 en las propiedades. pero si le pongo algun valor q este buscando si hace lo que quiero que es desplegar en unos edit los datos que se seleccionan. y asi es como lo llamo

en delphi

with spConsultaExpedientes do
begin
Parameters.ParamByName('@Cuenta').Value:=QuotedStr(txtCuenta.Text);
ExecProc;
txtNombreNegocio.Text := spConsultaExpedientes.Fields[0].AsString;
txtDomicilioNegocio.Text := spConsultaExpedientes.Fields[1].AsString;
txtColoniaNegocio.Text := spConsultaExpedientes.Fields[2].AsString;
txtDenominado.Text:= spConsultaExpedientes.Fields[3].AsString;
txtPermiso.Text:= spConsultaExpedientes.Fields[4].AsString;
txtGiro.Text:= spConsultaExpedientes.Fields[5].AsString;
txtStatus.Text:= spConsultaExpedientes.Fields[6].AsString;
txtZona.Text:= spConsultaExpedientes.Fields[7].AsString;
txtFechaApertura.Text:= spConsultaExpedientes.Fields[8].AsString;
txtFechaSenialamiento.Text:=spConsultaExpedientes.Fields[9].AsString;
txtFechaUltimoPago.Text:= spConsultaExpedientes.Fields[10].AsString;
end;

y como veran si estoy revuelta ya.. no tengo idea de q mas hacer ..

amerika111
02-01-2010, 19:06:05
duda resuelta... por asesoria de un prof. q si sabe... bueno lo que me recomendaron es utilizar mejor un adoquery en lugar del adostoredproc. y para que funcione nada mas hay que poner en la propiedad sql del adoquery el procedimiento que se va a llamar asignandole las variables como los reconoceria delphi es decir :

exec procedure ______ @variable=:variable

y ya en la propiedad paramerter del adoquery poner el tipo de valor que tomaran las variable y ya que se quiera llamar el procedimiento se llama asi

adoquery.parameter.parambyname('').value=txt___.text o la variable que se le vaya asignar. y ya nada mas se abre el query.

y pss ya con eso me corrio....



PERO el procedimiento que me corre es un select lo intente con un insert y ni siquiera me deja activar el query me dice que el campo clave de la tabla no acepta duplicado pero aun ni siquiera trato de insertar datos y me manda ese error cuando la quiero activar en las propiedades el query..
y pss hice exactamente lo que menciono anteriormente nada mas que este procedimiento es de insertar y recive dos parametros por lo que lo hice asi.

en la propiedad SQL del ADOquery
exec procedure ______ @variable=:variable, @variable2=:varible2

entonces nose cual sera el problema hay si a alguien se le ocurre algo,, le agradecere los comment...