opiniones y/o mejoras para este problema

22/09/2006 - 16:01 por Sonia | Informe spam
Tengo una aplicacion en vb .net que la usan 20 operadoras con una bd acces q
esta en el pc servidor y una ampliacion de esa misma aplicacion q la usan 2
ordenadores conectadas a esa misma bd
el problema es q va perfectamente pero cuando estan todos los ordenadores
la vez va un poco lento en algunos casos.
ya se q probablemente sea pq la bd esta en acces y no en sql pero de momento
eso no puedo modificarlo. lo unico q hace es ver informacion de la bd y
insertar , modificar o borrar datos de las tablas usando basicamente
datagrid y listviews y textbox (posiblemente no sepa todavia exprimir al
maximo las ventajas del .net), ya q este mismo programa estaba hecho en vb6
y va bastante mas rapido(cosa q no entiendo)

lo q queria saber es si es posible hacer lo siguiente:

los 2 ordenadores q usan la aplicacion ampliada hacen basicamente la
facturacion,albaranes y contro de stock.
esas tablas no se usan en la otra aplicacion(las de las 20 operadoras) y
queria saber si es posible q al hacer la conexion no influya en todas las
tablas para asi ir mas rapido o si para cada cambio q se haya de la bd solo
se active/conecte la tabla en cuestion en vez de toda la bd hago casi todas
las coenxiones usando estas funciones(os las pongo x si sabeis mejoras o si
se puede cambiar lo de la conexion), ya q casi todos los ejemplos q veo son
usando sql
Gracias!

Imports System.Data.OleDb
Sub main()
Path1 = System.IO.Path.GetFullPath("\\Equipo3\C\DYLR\")
ArchivoDatos = path1 & "dyla.mdb"
CadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &
ArchivoDatos & ";Persist Security Info=False"
Dim frm As New principal
frm.ShowDialog()
End Sub

'funciones
Public Sub Gestionar(ByVal sql As String)
Dim conexion As New OleDb.OleDbConnection
conexion.ConnectionString = CadenaConexion
conexion.Open()
Dim Comando As OleDbCommand = New OleDbCommand
Comando.Connection = conexion
Comando.Transaction = conexion.BeginTransaction
Try
Comando.CommandText = sql
Comando.ExecuteNonQuery()
Comando.Transaction.Commit()
Correcto = True
Catch Errorcito As Exception
Comando.Transaction.Rollback()
Correcto = False
MsgBox("Operación no realizada", MsgBoxStyle.Critical, "Error de
la aplicación")
Finally
conexion.Close()
conexion.Dispose()
End Try
End Sub

Public Sub CrearMiOleDbCommand(ByVal myExecuteQuery As String, ByVal
myConnectionString As String)
Try
Dim myConnection As New OleDbConnection(myConnectionString)
Dim myCommand As New OleDbCommand(myExecuteQuery, myConnection)
myCommand.Connection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
myConnection.Dispose()
Catch ee As Exception
MessageBox.Show(ee.Message)
End Try
End Sub
 

Leer las respuestas

#1 Jose Luis
27/09/2006 - 18:41 | Informe spam
Sonia realmente saltar la aplicación a SQL Server no seria tan traumático
como puedes llegar a pensar. Al tener una capa de comunicación con la base
de datos has aislado la aplicación en si de la gestión de los datos. Tal y
como lo tienes ahora solo deberías cambiar el conection string y ya
trabajarías en SQL Server.

Con respecto al Access, las tablas usadas por la aplicación extendida
podrías pasarla a otra base de datos, aunque a mi en el fondo Access no me
gusta, solo lo uso en casos de extrema necesidad. ;)
Con respecto a lo de activar/conectar a una tabla en concreto, realmente tu
no te conectas a una tabla, tu te conectas a una base de datos por lo
tanto...

Si tienes un momento para investigar prueba a pasar a modo de pruebas tu
base de datos a un SQL Server Express y cambia el conection string en tu
aplicación, debería de funcionarte sin problemas. :D

Suerte.
"Sonia" escribió en el mensaje
news:urwF8%
Tengo una aplicacion en vb .net que la usan 20 operadoras con una bd acces
q
esta en el pc servidor y una ampliacion de esa misma aplicacion q la usan
2
ordenadores conectadas a esa misma bd
el problema es q va perfectamente pero cuando estan todos los ordenadores
la vez va un poco lento en algunos casos.
ya se q probablemente sea pq la bd esta en acces y no en sql pero de
momento
eso no puedo modificarlo. lo unico q hace es ver informacion de la bd y
insertar , modificar o borrar datos de las tablas usando basicamente
datagrid y listviews y textbox (posiblemente no sepa todavia exprimir al
maximo las ventajas del .net), ya q este mismo programa estaba hecho en
vb6
y va bastante mas rapido(cosa q no entiendo)

lo q queria saber es si es posible hacer lo siguiente:

los 2 ordenadores q usan la aplicacion ampliada hacen basicamente la
facturacion,albaranes y contro de stock.
esas tablas no se usan en la otra aplicacion(las de las 20 operadoras) y
queria saber si es posible q al hacer la conexion no influya en todas las
tablas para asi ir mas rapido o si para cada cambio q se haya de la bd
solo
se active/conecte la tabla en cuestion en vez de toda la bd hago casi
todas
las coenxiones usando estas funciones(os las pongo x si sabeis mejoras o
si
se puede cambiar lo de la conexion), ya q casi todos los ejemplos q veo
son
usando sql
Gracias!

Imports System.Data.OleDb
Sub main()
Path1 = System.IO.Path.GetFullPath("\\Equipo3\C\DYLR\")
ArchivoDatos = path1 & "dyla.mdb"
CadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &
ArchivoDatos & ";Persist Security Info=False"
Dim frm As New principal
frm.ShowDialog()
End Sub

'funciones
Public Sub Gestionar(ByVal sql As String)
Dim conexion As New OleDb.OleDbConnection
conexion.ConnectionString = CadenaConexion
conexion.Open()
Dim Comando As OleDbCommand = New OleDbCommand
Comando.Connection = conexion
Comando.Transaction = conexion.BeginTransaction
Try
Comando.CommandText = sql
Comando.ExecuteNonQuery()
Comando.Transaction.Commit()
Correcto = True
Catch Errorcito As Exception
Comando.Transaction.Rollback()
Correcto = False
MsgBox("Operación no realizada", MsgBoxStyle.Critical, "Error
de
la aplicación")
Finally
conexion.Close()
conexion.Dispose()
End Try
End Sub

Public Sub CrearMiOleDbCommand(ByVal myExecuteQuery As String, ByVal
myConnectionString As String)
Try
Dim myConnection As New OleDbConnection(myConnectionString)
Dim myCommand As New OleDbCommand(myExecuteQuery, myConnection)
myCommand.Connection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
myConnection.Dispose()
Catch ee As Exception
MessageBox.Show(ee.Message)
End Try
End Sub



Preguntas similares