Problema con SP y Visual Basic

05/09/2004 - 01:46 por Leo Lob | Informe spam
Tengo este Stored Procedure en SQL Server:

CREATE PROCEDURE SP_Clientes AS

select nombre, domicilio, saldo from clientes order by saldo desc

GO


Desde VB lo abro asi:

Dim DB As New ADODB.Connection
Dim RS As New ADODB.Recordset
DB.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist
Security Info=False;Initial Catalog=ORT;Data Source=lsiserver"
DB.Open

RS.Open "SP_Clientes", DB, adOpenForwardOnly, adLockOptimistic
RS.MoveFirst
.
.
.
Y anda todo bien.

Ahora, si antes del Select en el SP agrego un Insert Into, no logro que el
SP me devuelva nada. Me da un error en la linea del RS.MoveFirst.

Porque es eso?

Si quiero hacer un Insert y que el mismo SP me devuelva la tabla con el
Insert ya hecho, no puedo???

Gracia.

Preguntas similare

Leer las respuestas

#6 Leo Lob
06/09/2004 - 02:37 | Informe spam
Entiendo.

Ahora, mi SP es asi de simple:

INSERT INTO CLIENTES (NOMBRE) VALUES ('AAA')
SELECT * FROM ARTICULOS


Porque en este caso no me devuelve un recorset con los registros de la tabla
Articulos?



"Gustavo Larriera [MVP]" escribió en el mensaje
news:u$
A lo que yo me refería es a esto, observa que la última sentencia de este
script es un INSERT y no una SELECT. En tu mail original no brindaste los
detalles de los comandos que estabas ejecutando. Si no se usa VALUES en la
INSERT se van a tomar como valores a insertar los emitidos por el SELECT


que
viene a continuación.



use tempdb
go

create table t1 (col1 int, col2 char(20))
go
create table t2 (col1 char(20), col2 int, col3 char(40))
go

insert t1 values (1, 'a')
insert t1 values (2, 'b')
insert t2 values ('aaa', 111, 'aaaaaa')
insert t2 values ('bbb', 222, 'bbbbbb')
go

insert t1(col1, col2)
select col2, col1 from t2


Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Leo Lob" wrote in message
news:
> Perdoname, no me queda claro.
>
> Si yo hago:
> INSERT INTO CLIENTES (NOMBRE) VALUES ('AAA')
> SELECT CODIGO, DESCRIPCION FROM ARTICULOS
>
> Como es que hago un INSERT de los datos que el SELECT devuelve, si ni
> siquiera tocan la misma tabla?
>
> Podrias "desasnarme"?
>
> Gracias por tu ayuda.
>
>
>
> "Gustavo Larriera [MVP]" escribió en el


mensaje
> news:
>> Si estás ejecutando una sentencia INSERT seguida de SELECT, estás
>> haciendo
>> un INSERT de los datos que el SELECT produce. Entonces el sproc está
>> devolviendo nada pues lo que está haciendo es INSERT y no un SELECT.
>>
>> Tu código VB está esperando un recordset, pero tu sproc está haciendo


un
>> INSERT.
>>
>> Gustavo Larriera, MVP
>> Uruguay LatAm
>> http://sqljunkies.com/weblog/gux/
>> Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga


ningun
>> derecho / This posting is provided "AS IS" with no warranties, and
>> confers
>> no rights.
>> "Leo Lob" wrote in message
>> news:
>> > Tengo este Stored Procedure en SQL Server:
>> >
>> > CREATE PROCEDURE SP_Clientes AS
>> >
>> > select nombre, domicilio, saldo from clientes order by saldo desc
>> >
>> > GO
>> >
>> >
>> > Desde VB lo abro asi:
>> >
>> > Dim DB As New ADODB.Connection
>> > Dim RS As New ADODB.Recordset
>> > DB.ConnectionString = "Provider=SQLOLEDB.1;Integrated
>> > Security=SSPI;Persist
>> > Security Info=False;Initial Catalog=ORT;Data Source=lsiserver"
>> > DB.Open
>> >
>> > RS.Open "SP_Clientes", DB, adOpenForwardOnly, adLockOptimistic
>> > RS.MoveFirst
>> > .
>> > .
>> > .
>> > Y anda todo bien.
>> >
>> > Ahora, si antes del Select en el SP agrego un Insert Into, no logro


que
> el
>> > SP me devuelva nada. Me da un error en la linea del RS.MoveFirst.
>> >
>> > Porque es eso?
>> >
>> > Si quiero hacer un Insert y que el mismo SP me devuelva la tabla con


el
>> > Insert ya hecho, no puedo???
>> >
>> > Gracia.
>> >
>> >
>>
>>
>
>


Respuesta Responder a este mensaje
#7 Gustavo Larriera [MVP]
06/09/2004 - 04:17 | Informe spam
No reproduzco tu problema. He hecho tu SP y lo he ejecutado en el Query
Analyzer y me retorna correctamente el resultado de la SELECT.

No estarás haciendo algo mal en tu programa Visual Basic ?

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Leo Lob" wrote in message
news:
Entiendo.

Ahora, mi SP es asi de simple:

INSERT INTO CLIENTES (NOMBRE) VALUES ('AAA')
SELECT * FROM ARTICULOS


Porque en este caso no me devuelve un recorset con los registros de la
tabla
Articulos?



"Gustavo Larriera [MVP]" escribió en el mensaje
news:u$
A lo que yo me refería es a esto, observa que la última sentencia de este
script es un INSERT y no una SELECT. En tu mail original no brindaste los
detalles de los comandos que estabas ejecutando. Si no se usa VALUES en
la
INSERT se van a tomar como valores a insertar los emitidos por el SELECT


que
viene a continuación.



use tempdb
go

create table t1 (col1 int, col2 char(20))
go
create table t2 (col1 char(20), col2 int, col3 char(40))
go

insert t1 values (1, 'a')
insert t1 values (2, 'b')
insert t2 values ('aaa', 111, 'aaaaaa')
insert t2 values ('bbb', 222, 'bbbbbb')
go

insert t1(col1, col2)
select col2, col1 from t2


Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and
confers
no rights.
"Leo Lob" wrote in message
news:
> Perdoname, no me queda claro.
>
> Si yo hago:
> INSERT INTO CLIENTES (NOMBRE) VALUES ('AAA')
> SELECT CODIGO, DESCRIPCION FROM ARTICULOS
>
> Como es que hago un INSERT de los datos que el SELECT devuelve, si ni
> siquiera tocan la misma tabla?
>
> Podrias "desasnarme"?
>
> Gracias por tu ayuda.
>
>
>
> "Gustavo Larriera [MVP]" escribió en el


mensaje
> news:
>> Si estás ejecutando una sentencia INSERT seguida de SELECT, estás
>> haciendo
>> un INSERT de los datos que el SELECT produce. Entonces el sproc está
>> devolviendo nada pues lo que está haciendo es INSERT y no un SELECT.
>>
>> Tu código VB está esperando un recordset, pero tu sproc está haciendo


un
>> INSERT.
>>
>> Gustavo Larriera, MVP
>> Uruguay LatAm
>> http://sqljunkies.com/weblog/gux/
>> Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga


ningun
>> derecho / This posting is provided "AS IS" with no warranties, and
>> confers
>> no rights.
>> "Leo Lob" wrote in message
>> news:
>> > Tengo este Stored Procedure en SQL Server:
>> >
>> > CREATE PROCEDURE SP_Clientes AS
>> >
>> > select nombre, domicilio, saldo from clientes order by saldo desc
>> >
>> > GO
>> >
>> >
>> > Desde VB lo abro asi:
>> >
>> > Dim DB As New ADODB.Connection
>> > Dim RS As New ADODB.Recordset
>> > DB.ConnectionString = "Provider=SQLOLEDB.1;Integrated
>> > Security=SSPI;Persist
>> > Security Info=False;Initial Catalog=ORT;Data Source=lsiserver"
>> > DB.Open
>> >
>> > RS.Open "SP_Clientes", DB, adOpenForwardOnly, adLockOptimistic
>> > RS.MoveFirst
>> > .
>> > .
>> > .
>> > Y anda todo bien.
>> >
>> > Ahora, si antes del Select en el SP agrego un Insert Into, no logro


que
> el
>> > SP me devuelva nada. Me da un error en la linea del RS.MoveFirst.
>> >
>> > Porque es eso?
>> >
>> > Si quiero hacer un Insert y que el mismo SP me devuelva la tabla con


el
>> > Insert ya hecho, no puedo???
>> >
>> > Gracia.
>> >
>> >
>>
>>
>
>






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida