tipo cursor conexion sql y vb

04/06/2006 - 20:37 por comuner | Informe spam
Hola
Tengo una aplicacion vb que guarda datos contra sql server con ado, por
ahora lo hago asi:

Set cnn = New ADODB.Connection
cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=True;Data
Source=server;Initial catalog=gestion;User ID=gestion;Password=gestion"
Set rsLineas = New ADODB.Recordset
With rsLineas
.ActiveConnection = cnn
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.CursorLocation = adUseServer
.Open "SELECT * FROM lineas_ticket", , , , adCmdText
End With
For cuenta = 0 To frmTickets.grid.Rows - 1
rsLineas.AddNew
rsLineas!serie = varNumeroCaja
rsLineas!numero = varNumeroUltimoTicket
rsLineas!cantidad = Val(frmTickets.grid.TextMatrix(cuenta, 0))
rsLineas!concepto = frmTickets.grid.TextMatrix(cuenta, 1)
rsLineas!precio_linea Val(Replace(frmTickets.grid.TextMatrix(cuenta, 2), ",", "."))
rsLineas!total_linea Val(Replace(frmTickets.grid.TextMatrix(cuenta, 3), ",", "."))
rsLineas.Update
Next
rsLineas.Close
Set rsLineas = Nothing

Mi pregunta es si es la mejor forma de añadir registros con sql server y si
es el mejor tipo de cursor.

Gracias

Preguntas similare

Leer las respuestas

#1 MAXI [MVP SQL]
05/06/2006 - 00:39 | Informe spam
Hola, yo realmente no uso sentencias de SQL desde la aplicacion como tu
caso. Armo Stores Procedures y los ejecuto desde la aplicacion. Hay muchas
ventajas en usar Sp's vs codigo en la aplicacion. Te paso un link para que
leas

http://www.hayes.ch/sql/sql_dinamico.html


Microsoft MVP SQL Server
Orador para Culminis
Miembro de SQLgurus (www.sqlgurus.org)
"comuner" escribió en el mensaje
news:%
Hola
Tengo una aplicacion vb que guarda datos contra sql server con ado, por
ahora lo hago asi:

Set cnn = New ADODB.Connection
cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=True;Data
Source=server;Initial catalog=gestion;User ID=gestion;Password=gestion"
Set rsLineas = New ADODB.Recordset
With rsLineas
.ActiveConnection = cnn
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.CursorLocation = adUseServer
.Open "SELECT * FROM lineas_ticket", , , , adCmdText
End With
For cuenta = 0 To frmTickets.grid.Rows - 1
rsLineas.AddNew
rsLineas!serie = varNumeroCaja
rsLineas!numero = varNumeroUltimoTicket
rsLineas!cantidad = Val(frmTickets.grid.TextMatrix(cuenta, 0))
rsLineas!concepto = frmTickets.grid.TextMatrix(cuenta, 1)
rsLineas!precio_linea > Val(Replace(frmTickets.grid.TextMatrix(cuenta, 2), ",", "."))
rsLineas!total_linea > Val(Replace(frmTickets.grid.TextMatrix(cuenta, 3), ",", "."))
rsLineas.Update
Next
rsLineas.Close
Set rsLineas = Nothing

Mi pregunta es si es la mejor forma de añadir registros con sql server y
si
es el mejor tipo de cursor.

Gracias


Respuesta Responder a este mensaje
#2 Antonio Ortiz
05/06/2006 - 05:49 | Informe spam
Del lado del cliente podrias acelerar el preceso, evitando cargar la tabla
completa solo para añadir registros. Colocar un TOP seria buena idea para
agilizar la apertura.


Antonio Ortiz
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com


"comuner" escribió en el mensaje
news:%
Hola
Tengo una aplicacion vb que guarda datos contra sql server con ado, por
ahora lo hago asi:

Set cnn = New ADODB.Connection
cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=True;Data
Source=server;Initial catalog=gestion;User ID=gestion;Password=gestion"
Set rsLineas = New ADODB.Recordset
With rsLineas
.ActiveConnection = cnn
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.CursorLocation = adUseServer
.Open "SELECT * FROM lineas_ticket", , , , adCmdText
End With
For cuenta = 0 To frmTickets.grid.Rows - 1
rsLineas.AddNew
rsLineas!serie = varNumeroCaja
rsLineas!numero = varNumeroUltimoTicket
rsLineas!cantidad = Val(frmTickets.grid.TextMatrix(cuenta, 0))
rsLineas!concepto = frmTickets.grid.TextMatrix(cuenta, 1)
rsLineas!precio_linea > Val(Replace(frmTickets.grid.TextMatrix(cuenta, 2), ",", "."))
rsLineas!total_linea > Val(Replace(frmTickets.grid.TextMatrix(cuenta, 3), ",", "."))
rsLineas.Update
Next
rsLineas.Close
Set rsLineas = Nothing

Mi pregunta es si es la mejor forma de añadir registros con sql server y
si
es el mejor tipo de cursor.

Gracias


Respuesta Responder a este mensaje
#3 Julio Cesar
05/06/2006 - 22:47 | Informe spam
Hola Maxi

Donde puedo conseguir un buen tutorial de SP???

Un saludo,

"MAXI [MVP SQL]" escribió en el mensaje
news:
Hola, yo realmente no uso sentencias de SQL desde la aplicacion como tu
caso. Armo Stores Procedures y los ejecuto desde la aplicacion. Hay muchas
ventajas en usar Sp's vs codigo en la aplicacion. Te paso un link para que
leas

http://www.hayes.ch/sql/sql_dinamico.html


> Microsoft MVP SQL Server
Orador para Culminis
Miembro de SQLgurus (www.sqlgurus.org)
> "comuner" escribió en el mensaje
news:%
> Hola
> Tengo una aplicacion vb que guarda datos contra sql server con ado, por
> ahora lo hago asi:
>
> Set cnn = New ADODB.Connection
> cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=True;Data
> Source=server;Initial catalog=gestion;User ID=gestion;Password=gestion"
> Set rsLineas = New ADODB.Recordset
> With rsLineas
> .ActiveConnection = cnn
> .LockType = adLockOptimistic
> .CursorType = adOpenKeyset
> .CursorLocation = adUseServer
> .Open "SELECT * FROM lineas_ticket", , , , adCmdText
> End With
> For cuenta = 0 To frmTickets.grid.Rows - 1
> rsLineas.AddNew
> rsLineas!serie = varNumeroCaja
> rsLineas!numero = varNumeroUltimoTicket
> rsLineas!cantidad = Val(frmTickets.grid.TextMatrix(cuenta, 0))
> rsLineas!concepto = frmTickets.grid.TextMatrix(cuenta, 1)
> rsLineas!precio_linea > > Val(Replace(frmTickets.grid.TextMatrix(cuenta, 2), ",", "."))
> rsLineas!total_linea > > Val(Replace(frmTickets.grid.TextMatrix(cuenta, 3), ",", "."))
> rsLineas.Update
> Next
> rsLineas.Close
> Set rsLineas = Nothing
>
> Mi pregunta es si es la mejor forma de añadir registros con sql server y
> si
> es el mejor tipo de cursor.
>
> Gracias
>
>


Respuesta Responder a este mensaje
#4 Salvador Ramos
06/06/2006 - 09:09 | Informe spam
Hola,

Para ese tema tienes un libro bastante bueno. Lo puedes consultar en la
sección de libros de mi web, es el primero que aparece: SQL Server 2000
Programación con Ejemplos, de Fernando Guerrero y Carlos Rojas.
www.helpdna.net/bosqllib.htm

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"Julio Cesar" escribió en el mensaje
news:
Hola Maxi

Donde puedo conseguir un buen tutorial de SP???

Un saludo,

"MAXI [MVP SQL]" escribió en el mensaje
news:
Hola, yo realmente no uso sentencias de SQL desde la aplicacion como tu
caso. Armo Stores Procedures y los ejecuto desde la aplicacion. Hay
muchas
ventajas en usar Sp's vs codigo en la aplicacion. Te paso un link para
que
leas

http://www.hayes.ch/sql/sql_dinamico.html


>> Microsoft MVP SQL Server
Orador para Culminis
Miembro de SQLgurus (www.sqlgurus.org)
>> "comuner" escribió en el mensaje
news:%
> Hola
> Tengo una aplicacion vb que guarda datos contra sql server con ado, por
> ahora lo hago asi:
>
> Set cnn = New ADODB.Connection
> cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=True;Data
> Source=server;Initial catalog=gestion;User ID=gestion;Password=gestion"
> Set rsLineas = New ADODB.Recordset
> With rsLineas
> .ActiveConnection = cnn
> .LockType = adLockOptimistic
> .CursorType = adOpenKeyset
> .CursorLocation = adUseServer
> .Open "SELECT * FROM lineas_ticket", , , , adCmdText
> End With
> For cuenta = 0 To frmTickets.grid.Rows - 1
> rsLineas.AddNew
> rsLineas!serie = varNumeroCaja
> rsLineas!numero = varNumeroUltimoTicket
> rsLineas!cantidad = Val(frmTickets.grid.TextMatrix(cuenta, 0))
> rsLineas!concepto = frmTickets.grid.TextMatrix(cuenta, 1)
> rsLineas!precio_linea >> > Val(Replace(frmTickets.grid.TextMatrix(cuenta, 2), ",", "."))
> rsLineas!total_linea >> > Val(Replace(frmTickets.grid.TextMatrix(cuenta, 3), ",", "."))
> rsLineas.Update
> Next
> rsLineas.Close
> Set rsLineas = Nothing
>
> Mi pregunta es si es la mejor forma de añadir registros con sql server
> y
> si
> es el mejor tipo de cursor.
>
> Gracias
>
>






Respuesta Responder a este mensaje
#5 comuner
06/06/2006 - 14:20 | Informe spam
Bueno os comento, primero gracias por las respuestas, despues he estado
haciendo pruebas con el recordset y con insert y la diferencia es notable.

800 milisegundos con recordset de lado cliente
103 milisegudos con recordser de lado servidor
16 mlisegundos con insert y execute

es cierto que es dificil de mantener el codigo con el insert, pero la
rapidez que obtengo es indispensable para el tipo de operacion ya que es una
venta masiva de tickets en un parque tematico.
aun sigo haciendo pruebas de rendimiento, ya os ire comentando.

Saludos.


"comuner" escribió en el mensaje
news:%
Hola
Tengo una aplicacion vb que guarda datos contra sql server con ado, por
ahora lo hago asi:

Set cnn = New ADODB.Connection
cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=True;Data
Source=server;Initial catalog=gestion;User ID=gestion;Password=gestion"
Set rsLineas = New ADODB.Recordset
With rsLineas
.ActiveConnection = cnn
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.CursorLocation = adUseServer
.Open "SELECT * FROM lineas_ticket", , , , adCmdText
End With
For cuenta = 0 To frmTickets.grid.Rows - 1
rsLineas.AddNew
rsLineas!serie = varNumeroCaja
rsLineas!numero = varNumeroUltimoTicket
rsLineas!cantidad = Val(frmTickets.grid.TextMatrix(cuenta, 0))
rsLineas!concepto = frmTickets.grid.TextMatrix(cuenta, 1)
rsLineas!precio_linea > Val(Replace(frmTickets.grid.TextMatrix(cuenta, 2), ",", "."))
rsLineas!total_linea > Val(Replace(frmTickets.grid.TextMatrix(cuenta, 3), ",", "."))
rsLineas.Update
Next
rsLineas.Close
Set rsLineas = Nothing

Mi pregunta es si es la mejor forma de añadir registros con sql server y
si
es el mejor tipo de cursor.

Gracias


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