ADO STORED PROCEDURES
ADO STORED PROCEDURES
Buenas Tardes, alguien tendra un ejemplo de como llamar un store procedure y pasarles sus parametros MS-SQLSERVER a traves de ADO. Gracias.
Angel Stincone... Saludos...
FWH 8.08
XHARBOUR 1.1.0
VERCE 5.3
ADS 9.0
FWH 8.08
XHARBOUR 1.1.0
VERCE 5.3
ADS 9.0
Re: ADO STORED PROCEDURES
Select Tu_procedimiento( parametros )
Saludos
Saludos
Re: ADO STORED PROCEDURES
Gracias, por responder lo hago de esa manera y me da el siguiente error: Class: 'ERROR' has no exported method
Code: Select all
cad_sql0:="SELECT pp_actualiza_stock(@co_art='"+xc_art+"',@co_alma='"+xc_alma+"',@total_art="+str(xtot_art)
cad_sql0:=cad_sql0+",@tipo_stock='stock_act',@costo_b="+str(xuct)+",@fecha_mov='"+dtoc(xf_lot)
cad_sql0:=cad_sql0+"',@stotal_art="+str(xst_art)+",@costo_om="+str(xuctom)+",@total_uni="+str(xtot_uni)
cad_sql0:=cad_sql0+",@co_us_in='PROFIT',@co_sucu='01',@r_stock_neg=2,@accion='R',@desde='NDD')"
oRs := CreateObject("ADODB.RecordSet")
ors:CursorType = adOpenDynamic
ors:CursorLocation = adUseClient
ors:LockType = adLockOptimistic
oRs:ActiveConnection:= bc:ado
oRs:source := cad_Sql0
oRs:Open()
Angel Stincone... Saludos...
FWH 8.08
XHARBOUR 1.1.0
VERCE 5.3
ADS 9.0
FWH 8.08
XHARBOUR 1.1.0
VERCE 5.3
ADS 9.0
Re: ADO STORED PROCEDURES
No entiendo como pasas los parámetros, aqui un ejemplo
Saludos
Code: Select all
cQuery := "Select Neto( " + cNroLegajo + " ), Bruto( " + cNroLegajo + " )"
oRec := TOleAuto() : New ("ADODB.RecordSet")
oRec : CursorLocation := adUseClient
oRec : CursorType := adOpenDynamic
oRec : LockType := adLockOptimistic
oRec : ActiveConnection := oVarGlobales : oCon
oRec : Source := cQuery
oRec : Open()
Re: ADO STORED PROCEDURES
Y cual es el nombre del procedimiento ahi en tu ejemplo y cuales son los parametros? gracias
Angel Stincone... Saludos...
FWH 8.08
XHARBOUR 1.1.0
VERCE 5.3
ADS 9.0
FWH 8.08
XHARBOUR 1.1.0
VERCE 5.3
ADS 9.0
Re: ADO STORED PROCEDURES
Neto y bruto son los procedimientos, y cNroLegajo es el parámetro. Sería bueno que que pusieras aqui como programaste el procedimiento
Saludos
Saludos
Re: ADO STORED PROCEDURES
me sigue dando el mismo error
cad_sql0:="SELECT pp_actualiza_stock('"+xc_art+"','"+xc_alma+"',"+str(xtot_art)
cad_sql0:=cad_sql0+",'stock_act',"+str(xuct)+",'"+dtoc(xf_lot)
cad_sql0:=cad_sql0+"',"+str(xst_art)+","+str(xuctom)+","+str(xtot_uni)
cad_sql0:=cad_sql0+",'PROFIT','01',2,'R','NDD')"
es un procedimiento almacenado en el server MS-SQLSERVER
cad_sql0:="SELECT pp_actualiza_stock('"+xc_art+"','"+xc_alma+"',"+str(xtot_art)
cad_sql0:=cad_sql0+",'stock_act',"+str(xuct)+",'"+dtoc(xf_lot)
cad_sql0:=cad_sql0+"',"+str(xst_art)+","+str(xuctom)+","+str(xtot_uni)
cad_sql0:=cad_sql0+",'PROFIT','01',2,'R','NDD')"
es un procedimiento almacenado en el server MS-SQLSERVER
Code: Select all
USE [demo]
GO
/****** Object: StoredProcedure [dbo].[pp_actualiza_stock] Script Date: 03/11/2013 15:08:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[pp_actualiza_stock]
/******************************************************************************
* Stored Procedure : pp_actualiza_stock *
* Fecha Creación : 22/11/2001 *
* Parámetros : - @co_art char(30) código del articulo al cual se le mo- *
* difica el stock. *
* - @co_alma char(6) código del almacen donde se afectará *
* el stock. *
* - @total_art decimal(28,12) cantidad de artículos. *
* - @tipo_stock char(9) tipo de operación a ser realizada: *
* - stock_com --> comprometido, *
* - stock_act --> actual, *
* - stock_des --> por despachar, *
* - stock_lle --> por llegar. *
* - @costo_b decimal(28,12) costo en la moneda base. *
* - @fecha_mov smalldatetime fecha del movimiento. *
* - @stotal_art decimal(28,12) cantidad de artículos en la *
* unidad secundaria. *
* - @costo_om decimal(28,12) costa en otra moneda. *
* - @total_uni decimal(28,12) unidad de la venta. *
* - @co_us_in char(6) usuario que realiza la operación. *
* - @co_sucu char(6) sucursal del movimiento. *
* - @r_stock_neg tinyint indica cual será el comportamien- *
* to con respecto al stock negativo: *
* - 0 --> indica que no se puede facturar en negativo. *
* - 1 --> indica que se debe preguntar al usuario si de- *
* sea facturar con estoc en negativo. *
* - 2 --> indica que puede facturar con stock en negati- *
* vo o que la respuesta fue positiva. *
* - @accion char(1) indica cual es el tipo de operación a *
* realizar sobre el stock: *
* - S --> aumentar el stock. *
* - R --> disminuir el stock. *
* - @desde char(4) indica desde donde se llama a este *
* procedimiento. *
* Descripción : Este procedimiento se encarga modificar el stock de un *
* artículo y de manejar el esquema de _ de negati- *
* vo de acuerdo a los parámetros que recibe. *
* Desarrollador : Noel Quiroz A. *
******************************************************************************/
@co_art char(30),@co_alma char(6),@total_art decimal(28,12),@tipo_stock char(9),
@costo_b decimal(28,12),@fecha_mov smalldatetime,@stotal_art decimal(28,12),
@nro_lote char(10),@fech_lote smalldatetime,@costo_om decimal(28,12),
@total_uni decimal(28,12),@co_us_in char(6),@co_sucu char(6),@r_stock_neg tinyint,
@p_lotefec_amb bit,@p_lotefec_res bit,@accion char(1),@desde char(4)
as
declare @cantidad_act decimal (28,12),@scantidad_act decimal (28,12),
@total_artc decimal(28,12) ,@status_sal int,@des_art varchar(120),
@ult_cos_un decimal(28,12) ,@cos_pro_un decimal(28,12),
@ult_cos_om decimal(28,12) ,@cos_pro_om decimal(28,12),
@fec_ult_co smalldatetime ,@fec_pro_un smalldatetime,
@fec_ult_om smalldatetime ,@fec_pro_om smalldatetime,
@relac_aut int ,@uni_relac decimal(28,12),
@p_lotenro bit ,@p_lotefec bit,
@lote bit
select @des_art = art_des ,@cantidad_act = stock_act,
@ult_cos_un = ult_cos_un,@cos_pro_un = cos_pro_un,
@ult_cos_om = ult_cos_om,@cos_pro_om = cos_pro_om,
@fec_ult_co = fec_ult_co,@fec_pro_un = fec_cos_pr,
@fec_ult_om = fec_ult_om,@fec_pro_om = fec_pro_om,
@relac_aut = relac_aut ,@uni_relac = uni_relac,
@lote = lote
from art where co_art = @co_Art
if @relac_aut in (2,3) and @uni_relac != 0
begin
set @stotal_art = 0
end
select @p_lotenro = p_lotenro, @p_lotefec = p_lotefec from par_emp
/******************************************************************************
* Proceso para el Stock comprometido. *
******************************************************************************/
if @tipo_stock = 'stock_com'
begin
if @accion = 'S'
begin
update art set stock_com = stock_com + (@total_art * @total_uni),
sstock_com = sstock_com + @stotal_art
where co_art = @co_art
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo aumentar el stock comprometido en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art as Mensaje
RETURN 1
end
if not exists (select * from st_almac where co_alma = @co_alma
and co_art = @co_art)
begin
insert into st_almac (co_alma,co_art)
values (@co_alma,@co_art)
if @@error != 0
begin
select 1 as Errores,'No se pudo insertar registro en la tabla de st_almac para el stock comprometido ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
end
update st_almac set stock_com = stock_com + (@total_art * @total_uni),
sstock_com = sstock_com + @stotal_art
where co_art = @co_art
and co_alma = @co_alma
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo aumentar el stock comprometido en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
end
else
begin
update st_almac set stock_com = stock_com - (@total_art * @total_uni),
sstock_com = sstock_com - @stotal_art
where co_art = @co_art
and co_alma = @co_alma
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo disminuir el stock comprometido en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
update art set stock_com = stock_com - (@total_art * @total_uni),
sstock_com = sstock_com - @stotal_art
where co_art = @co_art
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo disminuir el stock comprometido en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art as Mensaje
RETURN 1
end
end
end
/******************************************************************************
* Proceso para el Stock actual. *
******************************************************************************/
if @tipo_stock = 'stock_act'
begin
if @accion = 'S'
begin
/*Actualizar los costos*/
if @fecha_mov >= @fec_ult_co
begin
set @fec_ult_co = @fecha_mov
set @ult_cos_un = @costo_b
set @cos_pro_un = ((@ult_cos_un * @cantidad_act) + (@total_art * @costo_b))
/ (@cantidad_act + @total_art)
end
update art set stock_act = stock_act + (@total_art * @total_uni),
sstock_act = sstock_act + @stotal_art,
ult_cos_un = @ult_cos_un,
cos_pro_un = @cos_pro_un,
fec_ult_co = @fec_ult_co
where co_art = @co_art
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo aumentar el stock actual en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art as Mensaje
RETURN 1
end
if not exists (select * from st_almac where co_alma = @co_alma
and co_art = @co_art)
begin
insert into st_almac (co_alma,co_art)
values (@co_alma,@co_art)
if @@error != 0
begin
select 1 as Errores,'No se pudo insertar registro en la tabla de st_almac para el stock actual ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
end
update st_almac set stock_act = stock_act + (@total_art * @total_uni),
sstock_act = sstock_act + @stotal_art
where co_art = @co_art
and co_alma = @co_alma
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo aumentar el stock actual en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
end
else
begin
/******************************************************************************
* Manejo de lotes, para este fin se utilizan 3 variables: *
* - p_lotenro --> esta indica si en parámetros de la empresa está activada la *
* marca de trabajar los lotes por número. *
* - p_lotefec --> esta indica si en parámetros de la empresa está activada la *
* marca de trabajar los lotes por fecha de vencimiento. *
* - lote --> esta indica si el artículo en curso maneja lotes. *
******************************************************************************/
if (@p_lotenro = 1 or @p_lotefec = 1) and @lote = 1
begin
if len(rtrim(@nro_lote)) = space(0)
begin
select 3 as Errores,'El número de lote para el artículo ' + rtrim(@co_art) +
' no fue especificado '
return 3
end
if @fecha_mov > @fech_lote and @p_lotefec_res = 0
begin
if @p_lotefec_amb = 1
begin
select 3 as Errores,'El número de lote ' + rtrim(@nro_lote) + ' se encuentra vencido ' +
convert(varchar,@fech_lote,103)
return 3
end
else
if @p_lotefec_amb = 0
begin
select 2 as Errores,'El número de lote ' + rtrim(@nro_lote) + ' se encuentra vencido ' +
convert(varchar,@fech_lote,103) + '.' + char(13) + 'Desea Continuar?' as Mensaje
return 2
end
end
update st_lote set stock_act = stock_act - (@total_art * @total_uni),
@cantidad_act = stock_act - (@total_art * @total_uni),
sstock_act = sstock_act - @stotal_art,
@scantidad_act = sstock_act - @stotal_art
where co_art = @co_art
and co_alma = @co_alma
and nro_lote = @nro_lote
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo actualizar el stock actual para el lote ' +
@nro_lote as Mensaje
RETURN 1
end
if @cantidad_act < 0
begin
if @r_stock_neg = 0
begin
if @desde in ('FACT','COMP')
select 3 as Errores,'No hay suficiente stock para el artículo ' + rtrim(@co_art) + ' almacén ' +
rtrim(@co_alma) + ' Nro lote ' + rtrim(@nro_lote) + '.' + char(13) +
'Stock actual: ' + convert(varchar,(@cantidad_act + (@total_art * @total_uni)))
as Mensaje
return 3
end
else
if @r_stock_neg = 2
begin
select 2 as Errores,'No hay suficiente stock para el artículo ' + rtrim(@co_art) + ' almacén ' +
rtrim(@co_alma) + ' Nro lote ' + rtrim(@nro_lote) + '.' + char(13) +
'Stock actual: ' + convert(varchar,(@cantidad_act + (@total_art * @total_uni))) + char(13) +
'Desea Continuar?' as Mensaje
return 2
end
end
end
if exists (select * from art where co_art = @co_art
and compuesto = 1
and @desde in ('FACT','COMP')
and stock_act < @total_art)
begin
select @total_artc = (@total_art - stock_act) from art where co_art = @co_art
exec @status_sal = pp_genera_compuesto @co_art,@co_alma,@total_artc,
@tipo_stock,@costo_b,@fecha_mov,
@stotal_art,@costo_om,@total_uni,
@co_us_in,@co_sucu,@r_stock_neg,
@accion
if @status_sal != 0
begin
return 0
end
end
if not exists(select * from st_almac where co_art = @co_art and co_alma = @co_alma)
Insert into st_almac (co_art, co_alma) values (@co_art, @co_alma)
update st_almac set stock_act = stock_act - (@total_art * @total_uni),
@cantidad_act = stock_act - (@total_art * @total_uni),
sstock_act = sstock_act - @stotal_art,
@scantidad_act = sstock_act - @stotal_art
where co_art = @co_art
and co_alma = @co_alma
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo actualizar el stock actual para el almacen ' +
@co_alma as Mensaje
RETURN 1
end
if @cantidad_act < 0
begin
if @r_stock_neg = 0
begin
if @desde in ('FACT','COMP')
select 3 as Errores,'No hay suficiente stock, en el almacén: ' + rtrim(@co_alma) +
' para el artículo: ' + rtrim(@co_art) + ' ' + rtrim(@des_art) + '.' + char(13)
+ 'Stock actual: ' + convert(varchar,(@cantidad_act + (@total_art * @total_uni)))
as Mensaje
return 3
end
else
if @r_stock_neg = 2
begin
select 2 as Errores,'No hay suficiente stock, en el almacén: ' + rtrim(@co_alma) +
' para el artículo: ' + rtrim(@co_art) + ' ' + rtrim(@des_art) + '.' + ' Stock actual: ' +
convert(varchar,(@cantidad_act + (@total_art * @total_uni))) + '.' + char(13) +
'Desea Continuar?' as Mensaje
return 2
end
end
if @scantidad_act < 0 and @stotal_art != 0
begin
if @r_stock_neg = 0
begin
if @desde in ('FACT','COMP')
select 3 as Errores,'No hay suficiente stock(Secun), en el almacén: ' + rtrim(@co_alma) +
' para el artículo: ' + rtrim(@co_art) + ' ' + rtrim(@des_art) + '.' + char(13)
+ 'Stock actual: ' + convert(varchar,(@scantidad_act + (@stotal_art * @total_uni)))
as Mensaje
return 3
end
else
if @r_stock_neg = 2
begin
select 2 as Errores,'No hay suficiente stock(Secun), en el almacén: ' + rtrim(@co_alma) +
' para el artículo: ' + rtrim(@co_art) + ' ' + rtrim(@des_art) + '.' + ' Stock actual: ' +
convert(varchar,(@scantidad_act + (@stotal_art * @total_uni))) + '.' + char(13) +
'Desea Continuar?' as Mensaje
return 2
end
end
update art set stock_act = stock_act - (@total_art * @total_uni),
sstock_act = sstock_act - @stotal_art
where co_art = @co_art
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo disminuir el stock actual en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art as Mensaje
RETURN 1
end
end
end
/******************************************************************************
* Proceso para el Stock por despachar. *
******************************************************************************/
if @tipo_stock = 'stock_des'
begin
if @accion = 'S'
begin
update art set stock_des = stock_des + (@total_art * @total_uni),
sstock_des = sstock_des + @stotal_art
where co_art = @co_art
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo aumentar el stock por despachar en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art as Mensaje
RETURN 1
end
if not exists (select * from st_almac where co_alma = @co_alma
and co_art = @co_art)
begin
insert into st_almac (co_alma,co_art)
values (@co_alma,@co_art)
if @@error != 0
begin
select 1 as Errores,'No se pudo insertar registro en la tabla de st_almac para el stock por despachar ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
end
update st_almac set stock_des = stock_des + (@total_art * @total_uni),
sstock_des = sstock_des + @stotal_art
where co_art = @co_art
and co_alma = @co_alma
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo aumentar el stock por despachar en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
end
else
begin
update st_almac set stock_des = stock_des - (@total_art * @total_uni),
sstock_des = sstock_des - @stotal_art
where co_art = @co_art
and co_alma = @co_alma
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo disminuir el stock por despachar en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
update art set stock_des = stock_des - (@total_art * @total_uni),
sstock_des = sstock_des - @stotal_art
where co_art = @co_art
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo disminuir el stock por despachar en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art as Mensaje
RETURN 1
end
end
end
/******************************************************************************
* Proceso para el Stock por entregar. *
******************************************************************************/
if @tipo_stock = 'stock_lle'
begin
if @accion = 'S'
begin
update art set stock_lle = stock_lle + (@total_art * @total_uni),
sstock_lle = sstock_lle + @stotal_art
where co_art = @co_art
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo aumentar el stock por llegar en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art as Mensaje
RETURN 1
end
if not exists (select * from st_almac where co_alma = @co_alma
and co_art = @co_art)
begin
insert into st_almac (co_alma,co_art)
values (@co_alma,@co_art)
if @@error != 0
begin
select 1 as Errores,'No se pudo insertar registro en la tabla de st_almac para el stock poe llegar ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
end
update st_almac set stock_lle = stock_lle + (@total_art * @total_uni),
sstock_lle = sstock_lle + @stotal_art
where co_art = @co_art
and co_alma = @co_alma
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo aumentar el stock por llegar en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
end
else
begin
update st_almac set stock_lle = stock_lle - (@total_art * @total_uni),
sstock_lle = sstock_lle - @stotal_art
where co_art = @co_art
and co_alma = @co_alma
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo aumentar el stock por llegar en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art + ' en el almacén ' +
rtrim(@co_alma) as Mensaje
RETURN 1
end
update art set stock_lle = stock_lle - (@total_art * @total_uni),
sstock_lle = sstock_lle - @stotal_art
where co_art = @co_art
if @@error != 0 or @@rowcount = 0
begin
select 1 as Errores,'No se pudo disminuir el stock por llegar en la tabla de artículos ' +
'para el artículo ' + rtrim(@co_art) + ' ' + @des_art as Mensaje
RETURN 1
end
end
end
RETURN
Angel Stincone... Saludos...
FWH 8.08
XHARBOUR 1.1.0
VERCE 5.3
ADS 9.0
FWH 8.08
XHARBOUR 1.1.0
VERCE 5.3
ADS 9.0
Re: ADO STORED PROCEDURES
No trabajo mssql, imagino que el paso de parámetros debe estar normalizado para cualquier motor sql. Lo que no entiendo son las igualdades que ponés en el paso de parámetros po ej '@co_art='"+xc_art', en MySql el paso sería solamente el valor. Acá se me acabó la sapiencia.
Saludos
Saludos
Re: ADO STORED PROCEDURES
If you are looking for a Sample on how to call a stored procedure on MS-SQL Server with parameters, here is one which may be useful to you
Regards
Anser
Code: Select all
// Trying to initiate the Stored Procedure
oCmd:=CreateObject("ADODB.Command")
oCmd:ActiveConnection:=oApp:oConnection
oCmd:CommandType:=adCmdStoredProc
oCmd:CommandText:="StockUpDate" // Strored Procedure Name
// Creating Parameters before sending parameters to Stored Procedure
oParam := oCmd:CreateParameter( "cPartNo", adChar, adParamInput, 25 )
oCmd:Parameters:Append( oParam )
oParam := oCmd:CreateParameter( "cPartName",adChar, adParamInput, 25 )
oCmd:Parameters:Append( oParam )
oParam := oCmd:CreateParameter( "cQty",adChar, adParamInput, 25 )
oCmd:Parameters:Append( oParam )
oParam := oCmd:CreateParameter( "cColumName",adChar, adParamInput, 25 )
oCmd:Parameters:Append( oParam )
// Assigning Values to the Paramter
TRY
oCmd:Parameters( "cPartNo" ):Value := SparMast->PART
oCmd:Parameters( "cPartName" ):Value := Rtrim(Ltrim(SparMast->DESC))
oCmd:Parameters( "cQty" ):Value := LTrim( Str(Int(SparMast->CURR_QTY)) )
oCmd:Parameters( "cColumName" ):Value := "Alpy_Parvr_Qty"
CATCH oError
ShowSqlError( oError )
END
// Executing or Calling Stored Procedure
TRY
oCmd:Execute()
CATCH oError
ShowSqlError( oError )
END
Anser
Re: ADO STORED PROCEDURES
Em sql server (microsoft) los store procedures se llaman con EXECUTE no con SELECT.
por ejemplo, si necesito el SP me devuelva un recordset:
por ejemplo, si necesito el SP me devuelva un recordset:
Code: Select all
oClientes := adoRecordSet( oApp:oAdoConnector, "EXEC sp_buscar_cliente '" + aVars[ 1 ] + "'" )
xBrowse( oClientes )
Function ADORecordSet( oConnect, cSql, lConnect )
Local oRs
Local cError := "No se ha podido crear el objeto contenedor RECORDSET !"
try
oRs := CreateObject("ADODB.RecordSet")
oRs:CursorLocation := 3
oRs:LockType := 4
oRs:ActiveConnection:= oConnect
oRs:source := cSql
oRs:Open()
lConnect := .t.
catch
msadoerror( cSql, "Error de Conexion con servidor" )
return nil
end try
Return oRS