Visual Basic - Recorset esta cerrado??

Life is soft - evento anual de software empresarial
 
Vista:

Recorset esta cerrado??

Publicado por bren (4 intervenciones) el 20/02/2004 00:58:54
VB me manda un error diciendome que el recordset no esta abierto y no puede ejecutar el rs.EOF, el recordset lo creo a partir de un conjunto de registros que devuelve un store procedure de SQL Server. El codigo que tengo es el siguiente:
Dim cmd3 As New ADODB.Command
cmd3.CommandText = \"Ent_Val_Serie\"
cmd3.CommandType = adCmdStoredProc
cmd3.Name = \"Val_Serie\"
Set prm = cmd3.CreateParameter(\"ocfab\", adChar, adParamOutput, 3)
cmd3.Parameters.Append prm

Set prm1 = cmd3.CreateParameter(\"pcia\", adNumeric, adParamInput, 3, pubcia)
cmd3.Parameters.Append prm1

Set cmd3.ActiveConnection = cnn
cmd3.Parameters.Refresh
cmd3(1) = pubcia

Set dets = cmd3.Execute
cfab_vs = cmd3.Parameters(\"@ocfab\")

dets.Open cmd3
If dets.EOF Then <----------- aqui me marca el error

¿porque me dice que el recordset n oesta abierto aun cuando ya lo abri ?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Recorset esta cerrado??

Publicado por Cecilia Colalongo (3116 intervenciones) el 20/02/2004 02:19:17
Si el procedimiento devuelve resultados, cuando haces:

Set dets = cmd3.Execute

Ya tienes el recordset abierto y listo para utilizar, no debes abrirlo luego.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorset esta cerrado??

Publicado por Bren (4 intervenciones) el 20/02/2004 18:34:36
Me sigue enviando error en la linea
if dets.eof then

me dice que 'La operacion no esta permitida si el objeto esta cerrado' , la sentencia if la tengo enseguida del Set dets=cm3.Execute

¿en que estoy mal?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorset esta cerrado??

Publicado por Cecilia Colalongo (3116 intervenciones) el 20/02/2004 20:01:03
Revisa el procedimiento almacenado que es lo que devuelve primero, es posible que no esté devolviendo nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Recorset esta cerrado??

Publicado por Bren (4 intervenciones) el 20/02/2004 21:21:48
Precisamente era lo q te iba a comentar, dese VB el procedimiento no devuelve nada, pero ejecuto el procedimiento desde sql y me devuelve los valores, el codigo donde se definen los valores a regresar es el siguiente y lo que devuelve a recordset es la ultima consulta hecha ¿en que estoy mal? porque aun asi ni la variable me regresa el guion :S
CREATE PROCEDURE Ent_Val_Serie
@pcia numeric(3),
@psuc tinyint,
@ptip smallint,
@palm char(2),
@pgpo char(2),
@psbg char(2),
@part numeric(4),
@pnoserie char(7),
@ocfab as char(3) output

AS
SELECT no_serie,gpo,subgpo,art,entrada,salida,fecha_reg,causa,codigo_fab INTO #Art_Reingreso FROM detalle_ref WHERE @pgpo+@psbg+ltrim(str(@part)) in (@oartnvo,@oartpar) ORDER BY no_serie
SELECT a.no_serie,a.gpo+a.subgpo+ltrim(str(a.art)) as articulo,a.entrada,a.salida,a.fecha_reg,a.causa,a.codigo_fab INTO #Art_Dets FROM #Art_Reingreso a WHERE a.fecha_reg is not null and exists(select causa from causas_ret where permite_ent='S' and causa=a.causa)
drop table #Art_Reingreso
set @ocfab = "-"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar