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

Preguntas similare

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


Respuesta Responder a este mensaje
#2 .·:m·a·r·l·a:·.
03/12/2004 - 10:48 | Informe spam
perdona pero no te he entendido, me quedan todabia muchas cosas que aprender
(me veo aun en pañalesen SQLservers)

el id recien insertado es un numero (auque tratado como caracter(15) por
problemas de ceros al principio) que es creado en el procedimiento
almacenado (variable @MISid), al final del procedimiento la variable esta
lista con el codigo cliente

podrias indicarme que sentencias he de incluir en el codigo y como he de
modificar la forma que llamo al procedimiento almacenado en VBA

gracias, si no es mucho pedir


"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> wrote in message
news:%
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
>
>


Respuesta Responder a este mensaje
#3 Carlos Sacristán
03/12/2004 - 11:42 | Informe spam
Ok. Mira, si el código generado es por tu código es lo mismo que el
ejemplo que te comentaba, sólo que sin usar SCOPE_IDENTITY(). Lo puedes
hacer con parámetros de salida o haciendo que el procedimiento devuelva un
conjunto de resultados, en este caso únicamente el valor que has generado.

Si optas por esto segundo, tendrías que hacer lo que te comentaba en el
ejemplo, cambiando en el procedimiento SCOPE_IDENTITY() por el nombre de la
variable (@MISid). Al llamarlo tendrías que hacerlo igual que haces para
hacer una SELECT, no cambiaría nada


Un saludo

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

".·:m·a·r·l·a:·." escribió en el mensaje
news:
perdona pero no te he entendido, me quedan todabia muchas cosas que


aprender
(me veo aun en pañalesen SQLservers)

el id recien insertado es un numero (auque tratado como caracter(15) por
problemas de ceros al principio) que es creado en el procedimiento
almacenado (variable @MISid), al final del procedimiento la variable esta
lista con el codigo cliente

podrias indicarme que sentencias he de incluir en el codigo y como he de
modificar la forma que llamo al procedimiento almacenado en VBA

gracias, si no es mucho pedir


"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> wrote in message
news:%
> 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
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Maxi
03/12/2004 - 13:28 | Informe spam
Hola, como no soy amante de los identity para estas cosas, por lo cual te
voy a pasar un articulo de como a mi criterio se deberian hacer estas
cuestiones ;)

Un abrazo

http://www.microsoft.com/spanish/ms...art187.asp


Salu2
Maxi


".·: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


Respuesta Responder a este mensaje
#5 Carlos Sacristán
03/12/2004 - 13:46 | Informe spam
No Maxi, ella no usa un identity...


Un saludo

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

"Maxi" escribió en el mensaje
news:
Hola, como no soy amante de los identity para estas cosas, por lo cual te
voy a pasar un articulo de como a mi criterio se deberian hacer estas
cuestiones ;)

Un abrazo

http://www.microsoft.com/spanish/ms...art187.asp


Salu2
Maxi


".·: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
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida