puedo hacer que un procedimiento almacenado me devuelva un valor a una aplicacion corriendo en VBA ???

03/12/2004 - 09:30 por .·:m·a·r·l·a:·. | Informe spam
hola a todos

tengo creado un procedimiento almacenado que me da de alta los clientes,
este, entre otras formas, es llamado desde una aplicaicion VBA en excell
para automatizar el proceso cuando recibo clientes por hojas de excel

actualmente cada vez que el procedimiento es llamado, creo el cliente y ya
esta, mi intencion es que este a su vez devolviera el numero de cliente que
ha generado (este se genera segun determinadas reglas), por ejemplo para
mostrarlo en la aplicacion

el procedimiento es tal que (un pequeño resumen):

CREATE PROCEDURE dbo.EntityNEW @Name as char(40),
...
@Country
as char(50),
@Town as
char(30),
@Street
as char(30),
...
@Format
as char(40),
...
AS

DECLARE @MISid as char(15) // variable donde voy generando el id

... //busqueda de codigos, generacion del identificador, bla bla bla

SET @MISid = @Country_forMISid + @BA_forMISid + @Type_forMISid +
@Format_forMISid + @MISid_last5

... //inserciones en tablas del SQL-server el cliente y otros valores

GO



y la funcion con la que lo llamo tal que:

QueryString = "dbo.EntityNEW " + "'" + var_Name + + var_Country +
"','" + var_Town + "','" + var_Street + ... + var_Format + ... + "'"
If var_execute_insertion Then objConnSQLMIS.Execute (QueryString)



puede acerse esto, y en tal caso, que he de modificar en el procedimiento
alamacenado y como cojo el valor en la funcion VBA ??
he intentado buscar en la ayuda y en los BOL pero no he encontrado nada que
me oriente

gracias por adelantado
 

Leer las respuestas

#1 Carlos Sacristán
03/12/2004 - 10:06 | Informe spam
Podrías recoger el id recién insertado (entiendo que es un campo
autonumérico) con SCOPE_IDENTIY() y devolver este valor por medio de un
parámetro de salida.

Ésta sería la solución ideal, pero también puedes hacer que el
procedimiento almacenado te devolviera ese valor como un resulset, es decir,
como si hicieras una consulta a una tabla. En este caso tendrías que incluir
la sentencia SET NOCOUNT ON al comienzo del procedimiento y SET NOCOUNT OFF
SELECT SCOPE_IDENTITY() numeroInsertado al final del mismo.

Espero haberme explicado...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

".·:m·a·r·l·a:·." escribió en el mensaje
news:
hola a todos

tengo creado un procedimiento almacenado que me da de alta los clientes,
este, entre otras formas, es llamado desde una aplicaicion VBA en excell
para automatizar el proceso cuando recibo clientes por hojas de excel

actualmente cada vez que el procedimiento es llamado, creo el cliente y ya
esta, mi intencion es que este a su vez devolviera el numero de cliente


que
ha generado (este se genera segun determinadas reglas), por ejemplo para
mostrarlo en la aplicacion

el procedimiento es tal que (un pequeño resumen):

CREATE PROCEDURE dbo.EntityNEW @Name as char(40),
...



@Country
as char(50),
@Town


as
char(30),



@Street
as char(30),
...



@Format
as char(40),
...
AS

DECLARE @MISid as char(15) // variable donde voy generando el id

... //busqueda de codigos, generacion del identificador, bla bla bla

SET @MISid = @Country_forMISid + @BA_forMISid + @Type_forMISid +
@Format_forMISid + @MISid_last5

... //inserciones en tablas del SQL-server el cliente y otros valores

GO



y la funcion con la que lo llamo tal que:

QueryString = "dbo.EntityNEW " + "'" + var_Name + + var_Country +
"','" + var_Town + "','" + var_Street + ... + var_Format + ... +


"'"
If var_execute_insertion Then objConnSQLMIS.Execute (QueryString)



puede acerse esto, y en tal caso, que he de modificar en el procedimiento
alamacenado y como cojo el valor en la funcion VBA ??
he intentado buscar en la ayuda y en los BOL pero no he encontrado nada


que
me oriente

gracias por adelantado


Preguntas similares