Ver Mensaje Individual
  #1  
Antiguo 02-02-2010
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Reputación: 17
richy08 Va por buen camino
Como mandar llamar un procedimiento almacenado desde delphi

Buenos tardes compañeros hace ya bastante tiempo que no usaba procedimientos almacenados y se me olvido como mandarlos llamar desde delphi he estado leyendo un rato pero nada funciona este es mi procedimiento almacenado creado en mssql
Código SQL [-]
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER procedure [dbo].[Frm_posgueInsert] (@npost int, @sservice_code varchar(5), @ccost money, @dfech datetime, @stypexp varchar(30), @sdestypexp varchar(30)
 ,@ssuplier varchar(5), @ngue int, @iti varchar(1), @staini datetime, @staend datetime, @houini varchar(8)
 ,@houend varchar(8), @nconf int) 
as 
declare 
  @por int, @adeduc varchar(5), @identit int, @totalgen money 
begin
    insert into renposteosgue( npost, sservice_code, ccost, dfech, stypexp, sdestypexp, ssupplier, ngue, iti , staini, staend, houini, houend, scadena) 
    values (@npost, @sservice_code, @ccost, @dfech, @stypexp, @sdestypexp, @ssuplier,  @ngue, @iti, @staini, @staend, @houini, @houend, 0)

    select @identit=SCOPE_IDENTITY()
 

    Declare inserta Cursor For
    select por, adeduc from tablaservices t, reservededuc r
    where t.sdepartment =r.sapli
    and t.sservice_code=@sservice_code
    and r.nconf=@nconf and iva='N'

    open inserta

    FETCH NEXT from inserta into @por, @adeduc

    while @@fetch_status = 0
    begin
      select @totalgen=(@ccost*(@por/100))

      insert into renposteosgue( npost, sservice_code, ccost, dfech, stypexp, sdestypexp, ssupplier, ngue, iti,scadena) 
      values (@npost, @adeduc, @totalgen, @dfech, '', '', 'IMANT',  @ngue,'N', @identit)

    FETCH NEXT from inserta into @por, @adeduc
    end
    close inserta
    deallocate inserta
end

y este es el pedazo de codigo con el que lo intento llamar alguna ide de por que medice que los parametros no existen
Código Delphi [-]
 SP_Inserta.Close;
         SP_Inserta.Parameters[1].Value:=Qry_principal.fieldbyname('npost').Value;
         SP_Inserta.Parameters[2].Value:=trim(edt_services.Text);
         if Qry_TipCap.FieldByName('bkindchan').Value='D' then
         begin
           Md_Gral.Qry_KindChan.Close;
           Md_Gral.Qry_KindChan.open;
           SP_Inserta.Parameters[3].Value:=Qry_detalle.fieldbyname('ccost').value*Md_Gral.Qry_KindChan.fieldbyname('kind').Value;
         end
         else
         begin
           SP_Inserta.Parameters[3].Value:=Qry_detalle.fieldbyname('ccost').value;
         end;
         SP_Inserta.Parameters[4].Value:=Qry_detalle.fieldbyname('dfech').value;
         SP_Inserta.Parameters[5].Value:=Qry_detalle.fieldbyname('sTypExp').value;
         SP_Inserta.Parameters[6].Value:=Qry_detalle.fieldbyname('sDesTypExp').value;
         SP_Inserta.Parameters[7].Value:=trim(edt_sup.Text);
         SP_Inserta.Parameters[8].Value:=dbg_notin.Fields[2].Value;
         SP_Inserta.Parameters[9].Value:='N';
         SP_Inserta.Parameters[10].Value:='';
         SP_Inserta.Parameters[11].Value:='';
         SP_Inserta.Parameters[12].Value:='';
         SP_Inserta.Parameters[13].Value:='';
         SP_Inserta.Parameters[14].Value:=qry_principal.fieldbyname('nconf').Value;
         SP_Inserta.Prepared:=true;
         SP_Inserta.Open;
estoy utilizando un tadostoredprocedure en el cual no tengo nada de codigo adentro, ya le puse la conexion a la bd asi como el nombre del procedimiento gracias por cualquier comentario
Responder Con Cita