Metodo Save

18/07/2003 - 15:16 por Fabian Brussa | Informe spam
Hola, tengo el siguiente problema: cuando quiero grabar un recordset a un
doc. XML, este se vuelve a ejecutar. Según lo que averigué esto es asi.
Existe alguna solución que permita grabar el recordset abierto, si que se
ejecute de nuevo??.
Gracias

Fabián

Preguntas similare

Leer las respuestas

#1 Fabian Brussa
21/07/2003 - 09:55 | Informe spam
Hola Softjaen, te comento, el recordset es resultado de la ejecución de un
procedimiento almacenado. El problema es que cuando llamo al metodo SAVE del
recordset, se vuelve a ejecutar el Procedimiento almacenado, me di cuenta
porque en el, tengo un par de INSERT a algunas tablas y veo que lo hace dos
veces.

Gracias.
Fabián

"Softjaen" @yahoo.es> escribió en el mensaje
news:

"Fabian Brussa" escribió:

> cuando quiero grabar un recordset a un doc. XML, este se vuelve
> a ejecutar. Según lo que averigué esto es asi.
> Existe alguna solución que permita grabar el recordset abierto,
> si que se ejecute de nuevo??.

Hola, Fabian:

No entiendo muy bien tu mensaje en lo que concierne a «se vuelve a
ejecutar». Para grabar en disco el contenido de un Recordset abierto, con
sólo llamar al método «Save» del Recordset, el asunto está zanjado; no veo
yo que se ejecute de nuevo:

' Guardamos el Recordset en disco en formato XML
oRst.Save "C:\MiRecorset.xml", adPersistXML

Un saludo.

Enrique Martínez
[MS MVP - VB]


Respuesta Responder a este mensaje
#2 Fabian Brussa
21/07/2003 - 13:30 | Informe spam
Gracias Softjaen, asi mismo es como lo estoy utilizando, y detecte que se
ejecuta dos veces, uno para abrirlo y otro para ejecutar el .Save. Por lo
que averigue, esto es asi. Intente bajar el recordset "a mano" o sea
recorriendolo y generando el documento XML, y es muy lento cuando se superan
los 500 registros con mas de 10 campos. Si tienes otra opcion.. te lo
agradecería, lo mismo te agradezco tu preocupación.

Un saludo
Fabián


"Softjaen" @yahoo.es> escribió en el mensaje
news:

"Fabian Brussa" escribió:

> el recordset es resultado de la ejecución de un
> procedimiento almacenado. El problema es que
> cuando llamo al metodo SAVE del recordset, se vuelve
> a ejecutar el Procedimiento almacenado, me di cuenta
> porque en el, tengo un par de INSERT a algunas tablas
> y veo que lo hace dos veces.
>

Pues desconozco a qué se puede deber. ¿?

Si utilizas SQL Server, el siguiente ejemplo guarda en disco el resultado


de
ejecutar el procedimiento almacenado «byroyalty» de la base de datos de
prueba «pubs». El código está escrito en Visual Basic:

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter
Dim iParam As Integer

' Configuramos y abrimos la conexión
Set cnn = New ADODB.Connection
With cnn
.Provider = "SQLOLEDB.1"
.ConnectionString = "Persist Security Info=False;" & _
"User ID=sa;" & _
"Password=;" & _
"Initial Catalog=pubs;" & _
"Data Source=nombre_servidor_sql"
.Open
End With

' Creamos un objeto «Command»
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = cnn
.CommandText = "byroyalty"
.CommandType = adCmdStoredProc
End With

' Define el parámetro de entrada del procedimiento almacenado.
iParam = Trim(InputBox("Introduzca el valor del parámetro:"))

' Creamos un objeto «Parameter»
Set prm = New ADODB.Parameter
With prm
.Type = adInteger
.Size = 3
.Direction = adParamInput
.Value = iParam
End With

' Añadimos el parámetro a la colección
cmd.Parameters.Append prm

' Creamos un objeto «Recordset» al ejecutar
' el comando
Set rst = cmd.Execute()

' Guardamos en disco el conjunto de registros
' devueltos en formato XML
rst.Save App.Path & "\Prueba.xml", adPersistXML

' Cerramos los objetos
rst.Close
Set rst = Nothing
cnn.Close
Set cnn = Nothing

Un saludo.

Enrique Martínez
[MS MVP - VB]


Respuesta Responder a este mensaje
#3 Softjaen
21/07/2003 - 17:11 | Informe spam
"Fabian Brussa" escribió:

el recordset es resultado de la ejecución de un
procedimiento almacenado. El problema es que
cuando llamo al metodo SAVE del recordset, se vuelve
a ejecutar el Procedimiento almacenado, me di cuenta
porque en el, tengo un par de INSERT a algunas tablas
y veo que lo hace dos veces.




Pues desconozco a qué se puede deber. ¿?

Si utilizas SQL Server, el siguiente ejemplo guarda en disco el resultado de
ejecutar el procedimiento almacenado «byroyalty» de la base de datos de
prueba «pubs». El código está escrito en Visual Basic:

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter
Dim iParam As Integer

' Configuramos y abrimos la conexión
Set cnn = New ADODB.Connection
With cnn
.Provider = "SQLOLEDB.1"
.ConnectionString = "Persist Security Info=False;" & _
"User ID=sa;" & _
"Password=;" & _
"Initial Catalog=pubs;" & _
"Data Source=nombre_servidor_sql"
.Open
End With

' Creamos un objeto «Command»
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = cnn
.CommandText = "byroyalty"
.CommandType = adCmdStoredProc
End With

' Define el parámetro de entrada del procedimiento almacenado.
iParam = Trim(InputBox("Introduzca el valor del parámetro:"))

' Creamos un objeto «Parameter»
Set prm = New ADODB.Parameter
With prm
.Type = adInteger
.Size = 3
.Direction = adParamInput
.Value = iParam
End With

' Añadimos el parámetro a la colección
cmd.Parameters.Append prm

' Creamos un objeto «Recordset» al ejecutar
' el comando
Set rst = cmd.Execute()

' Guardamos en disco el conjunto de registros
' devueltos en formato XML
rst.Save App.Path & "\Prueba.xml", adPersistXML

' Cerramos los objetos
rst.Close
Set rst = Nothing
cnn.Close
Set cnn = Nothing

Un saludo.

Enrique Martínez
[MS MVP - VB]
Respuesta Responder a este mensaje
#4 Softjaen
21/07/2003 - 20:13 | Informe spam
"Fabian Brussa"

asi mismo es como lo estoy utilizando, y detecte que se
ejecuta dos veces, uno para abrirlo y otro para ejecutar el .Save.
Si tienes otra opcion.. te lo agradecería, lo mismo te agradezco tu
preocupación.




Lo siento, Fabian. No se me ocurre otra opción por ahora.

Enrique Martínez
[MS MVP - VB]
Respuesta Responder a este mensaje
#5 Fabian Brussa
25/07/2003 - 14:29 | Informe spam
bueno, gracias igual


"Softjaen" @yahoo.es> escribió en el mensaje
news:
Si deseas, haz la pregunta en el grupo de SQL Server de éste mismo


servidor
de noticias, por si los compañeros que habitualmente participan en el


grupo
te pueden echar una mano con el problema:

microsoft.public.es.sqlserver

Enrique Martínez
[MS MVP - VB]


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