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:
Mostrar la cita
que
Mostrar la cita
@Country
Mostrar la cita
as
Mostrar la cita
@Street
Mostrar la cita
@Format
Mostrar la cita
"'"
Mostrar la cita
que
Mostrar la cita
#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:%
Mostrar la cita
decir,
Mostrar la cita
incluir
Mostrar la cita
OFF
Mostrar la cita
ya
Mostrar la cita
@Town
Mostrar la cita
+
Mostrar la cita
procedimiento
Mostrar la cita
#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:
Mostrar la cita
aprender
Mostrar la cita
clientes,
Mostrar la cita
excell
Mostrar la cita
y
Mostrar la cita
cliente
Mostrar la cita
para
Mostrar la cita
...
Mostrar la cita
...
Mostrar la cita
...
Mostrar la cita
var_Country
Mostrar la cita
+
Mostrar la cita
nada
Mostrar la cita
#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:
Mostrar la cita
#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:
Mostrar la cita
ya
Mostrar la cita
@Street
Mostrar la cita
@Format
Mostrar la cita
+
Mostrar la cita
procedimiento
Mostrar la cita
Ads by Google
Search Busqueda sugerida