Es esto eficiente?

25/03/2009 - 20:40 por José A. Giménez [Py] | Informe spam
Saludos nuevamente. tengo una aplicacion front end en Access 2008 que se
comunica aon un Sql Server Express 2008. Tengo las tablas vinculadas, pero
deso hacer más eficiente las operaciones de grabacion, edicion y eliminacion
de datos. Con ls tablas vinculadas uso .FindFirst para localizar el registro
en cuestion y hacer .Addnew, .delete, .update.

He visto que el rendimiento cae al tener las tablas vinculadas, por lo que
deseo hacer estas operaciones por medio de SQL, sin tener tablas vinculadas.
Abajo copio un ejemplo de como actualizo una tabla llamada Bancos con datos
que se cargan en un formulario de Access. Estoy haciendo lo correcto? desde
el punto de vista del rendimiento?
Gracias!

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim tField As ADODB.Field
Set cnn = Nothing
Set rst = Nothing
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=Datos Upisa; " & _
"Data Source=SQLSERVER\SQLEXPRESS; " & _
"integrated security=SSPI; persist security info=True;"
rst.Open "UPDATE BANCOS SET BANCOS.Direccion='" & Me.LaDirec & _
"', BANCOS.Telefbanc='" & Me.ElTelbanco & _
"', BANCOS.Notas='" & Me.LaNota & _
"', BANCOS.Contacto1='" & Me.ElContact1 & "', BANCOS.TelContac1='" &
Me.EltelContac1 & "' WHERE NomBanco='" & Me.ElBanco & _
"'", cnn, adOpenStatic, adLockReadOnly
Set rst = Nothing
Set cnn = Nothing
Set rst = Nothing

Preguntas similare

Leer las respuestas

#1 Maxi
25/03/2009 - 19:53 | Informe spam
Hola y que quiere saber si es eficiente? si estan manejado bien las
sentencias sera efeciente, un update si tiene bien los indices lo sera.
Ahora si eso es eficiente desde access creo que se lo deberia preguntar a un
foro de ese producto



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server



"José A. Giménez [Py]" <gimenezj(algarroba)hotmail(punto)(com)> escribió en
el mensaje de noticias:#64u#
Saludos nuevamente. tengo una aplicacion front end en Access 2008 que se
comunica aon un Sql Server Express 2008. Tengo las tablas vinculadas, pero
deso hacer más eficiente las operaciones de grabacion, edicion y
eliminacion de datos. Con ls tablas vinculadas uso .FindFirst para
localizar el registro en cuestion y hacer .Addnew, .delete, .update.

He visto que el rendimiento cae al tener las tablas vinculadas, por lo que
deseo hacer estas operaciones por medio de SQL, sin tener tablas
vinculadas. Abajo copio un ejemplo de como actualizo una tabla llamada
Bancos con datos que se cargan en un formulario de Access. Estoy haciendo
lo correcto? desde el punto de vista del rendimiento?
Gracias!

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim tField As ADODB.Field
Set cnn = Nothing
Set rst = Nothing
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=Datos Upisa; " & _
"Data Source=SQLSERVER\SQLEXPRESS; " & _
"integrated security=SSPI; persist security info=True;"
rst.Open "UPDATE BANCOS SET BANCOS.Direccion='" & Me.LaDirec & _
"', BANCOS.Telefbanc='" & Me.ElTelbanco & _
"', BANCOS.Notas='" & Me.LaNota & _
"', BANCOS.Contacto1='" & Me.ElContact1 & "', BANCOS.TelContac1='" &
Me.EltelContac1 & "' WHERE NomBanco='" & Me.ElBanco & _
"'", cnn, adOpenStatic, adLockReadOnly
Set rst = Nothing
Set cnn = Nothing
Set rst = Nothing


Respuesta Responder a este mensaje
#2 José A. Giménez [Py]
25/03/2009 - 21:36 | Informe spam
Gracias por tu respuesta Maxi, en realidad he notado que a medida que crece
la base, las consultas, actualizaciones y ediciones de registros se hacen
más lentas. Adem´s de constantemente pierdo la vinculación con el SQL Server
Exp 2008.
Hal ejecutar directamente en SQL he notado que el proceso se hace más
rápido.
Simplemente quería confirmar si la manera en que lo hago es correcta o puedo
usar algún otro método para que las acciones sobre los registros no empiecen
a resentirse a medida que se cargan con más datos
Respuesta Responder a este mensaje
#3 José A. Giménez [Py]
25/03/2009 - 21:49 | Informe spam
En realidad me gustaria que me indicaran si es mejor hacerlo con el codigo o
bien mediante un procedimiento almacenado en SQL Server y llamarlo por
codigo desde Access 2007. Gracias
Respuesta Responder a este mensaje
#4 Carlos Sacristan
26/03/2009 - 09:19 | Informe spam
El problema de rendimiento que tienes es normal, al vincular las tablas,
Access se trae todos los datos a local para trabajar con ellas como si fueran
tablas propias. Por eso, a medida que aumenta el tamaño, el rendimiento cae
en picado.

Te recomiendo no vincular nada más que las tablas pequeñas, y el resto de
las operaciones (incluyendo los SELECT) hacerlas a través de procedimientos
almacenados


Un saludo
-
www.navento.com
Servicios de Localización GPS


"José A. Giménez [Py]" wrote:

En realidad me gustaria que me indicaran si es mejor hacerlo con el codigo o
bien mediante un procedimiento almacenado en SQL Server y llamarlo por
codigo desde Access 2007. Gracias




Respuesta Responder a este mensaje
#5 MEVB
26/03/2009 - 20:06 | Informe spam
Hola José

Existe alguna restricción que te obligue a utilizar Access como motor de
datos intermedio???
Yo te recomendaría que te olvides de Access a la hora de procesar los
registros.
Todos los UPDATE, INSERT, DELETE y hasta los SELECT déjalos del lado de SQL
Server.
Has que todas las operaciones sean a través de Procedimientos Almacenados o
Vistas.
Y luego enlazas esos objetos a los Queries de Access.

Saludos
MV



"Carlos Sacristan" escribió en
el mensaje news:

El problema de rendimiento que tienes es normal, al vincular las tablas,
Access se trae todos los datos a local para trabajar con ellas como si
fueran
tablas propias. Por eso, a medida que aumenta el tamaño, el rendimiento
cae
en picado.

Te recomiendo no vincular nada más que las tablas pequeñas, y el resto de
las operaciones (incluyendo los SELECT) hacerlas a través de
procedimientos
almacenados


Un saludo
-
www.navento.com
Servicios de Localización GPS


"José A. Giménez [Py]" wrote:

En realidad me gustaria que me indicaran si es mejor hacerlo con el
codigo o
bien mediante un procedimiento almacenado en SQL Server y llamarlo por
codigo desde Access 2007. Gracias




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida