necesito opiniones sobre este tema

28/09/2006 - 09:28 por Sonia | Informe spam
a ver si podeis solucionar mi duda.
cuando entre a trabajar en una empresa (editorial) habia u programa hecho en
vb6 q usaban 20 operadoras y la bd es acces97 y estaba en un pc servidor.
todos los ordenadores son xp menos el servidor q es win 2000.

cuando llegue querian hacer mejoras en esa aplicacion q basicamente consiste
en consultar colegios, hacer pedidos...en definitiva consultar y modificar
la bd acces y mostrar la informacion a traves de textbox, datagrids y
listview

en vez de seguir con esta aplicacion en vb6 , como no la habia hecho yo y
cada uno entiende lo q hace, empeze a hacerla de nuevo con el microsoft
visual studio .net 2003 y asi he hecho las mejoras incluso otra aplicacion q
consiste en ampliar la q tenia para tratar los temas de facturacion,
albaranes control de stock, etiquetas en crystal, control de acceso de las
operadoras etc

el problema llego cuando se ponen todas en la aplicacion ya q si la comparo
con la del vb6, esta del .net es bastante mas lenta. al hacer alguna
modificacion, se actueliza el listview o lo q sea y eso lleva unos segundos.
sobretodo el formulario principal q ponen un codigo de un colegio y se
tienen q llenar 4 datagrids y un registro(10 textbox)

entonces ahora me planteo como es posible si se supone q el .net tiene
bastantes mejoras y teoricamente va bastante mas rapido, como es en mi caso
totalmente contrario. ya se q lo ideal seria hacer la bd sql pero eso de
momento no es posible.

puede ser q no haya exprimido el .net y q no haya hecho la aplicacion de la
forma mas eficaz? (la verdad es q es mi primera aplicacion)

y otra cosa:
puede ser tb la forma de conexion a la bd? yo lo q hago es conectar a la bd
una vez entro en la aplicacion. eso lo he puesto en un modulo donde pongo
mas funciones como las vaiables globales, el llenar un datagrid...etc

no se si seria mejor y si se puede hacer la conexion en cada formulario y/o
solo conectar las tablas q te hicieran falta para ese form. no se si esto
sera posible.
esto ultimo me vendria bien para q las tablas referentes a la facturacion
solo se conectaran a la bd en la 2º aplicacion, ya q al generar la factura
tengo q ir guardando todas las lineas de un listview y cuesta bastante si
son muchas.

queria saber, aparte de opiniones sobre pq puede ir mas lento en vb .net q
envb6, 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 Bingen
28/09/2006 - 12:36 | Informe spam
Buenas.

Creo que el planteamiento no es del todo correcto.

No puedes comparar las aplicaciones para ver que una es mas rápida que la
otra y llegar a la conclusión de que tu aplicación es mas lenta por el hecho
de estar desarrollado en .Net. Las aplicaciones son totalmente diferentes.
Preguntate ¿ Sería tu aplicación más rápida que la anterior si la hubieras
desarrollado en VB 6 ?
Como tu comentas, es tu primera aplicación y la verdad, aunque cumpla con
los requisitos tal vez no sea del todo eficiente.

Creo que en vez de plantearte que tu aplicación es mas lenta por haberla
desarrollado en .Net, deberías estudiar los puntos donde consideras que la
aplicación es lenta y intentases optimizar el código.

Accede a la BD solo cuando lo necesites y recupera lo que necesites. Si
quieres la Factura "FFF", recupera solo dicha factura y sus líneas y no
todas las facturas y luego realizar el filtro en memoria. Con ello reduces
el tráfico de red y los tiempos de espera y ahorras recursos de máquina de
usuario. No recuperes tablas enteras.

Optimiza el código (un FOR no muy bien realizado, escrituras en bd no
necesarias, etc...)

Es normal que tu primera aplicación no sea tan eficiente como debiera.

Un saludo
Bingen




"Sonia" escribió en el mensaje
news:ujDqD$
a ver si podeis solucionar mi duda.
cuando entre a trabajar en una empresa (editorial) habia u programa hecho
en
vb6 q usaban 20 operadoras y la bd es acces97 y estaba en un pc servidor.
todos los ordenadores son xp menos el servidor q es win 2000.

cuando llegue querian hacer mejoras en esa aplicacion q basicamente
consiste
en consultar colegios, hacer pedidos...en definitiva consultar y modificar
la bd acces y mostrar la informacion a traves de textbox, datagrids y
listview

en vez de seguir con esta aplicacion en vb6 , como no la habia hecho yo y
cada uno entiende lo q hace, empeze a hacerla de nuevo con el microsoft
visual studio .net 2003 y asi he hecho las mejoras incluso otra aplicacion
q
consiste en ampliar la q tenia para tratar los temas de facturacion,
albaranes control de stock, etiquetas en crystal, control de acceso de las
operadoras etc

el problema llego cuando se ponen todas en la aplicacion ya q si la
comparo
con la del vb6, esta del .net es bastante mas lenta. al hacer alguna
modificacion, se actueliza el listview o lo q sea y eso lleva unos
segundos.
sobretodo el formulario principal q ponen un codigo de un colegio y se
tienen q llenar 4 datagrids y un registro(10 textbox)

entonces ahora me planteo como es posible si se supone q el .net tiene
bastantes mejoras y teoricamente va bastante mas rapido, como es en mi
caso
totalmente contrario. ya se q lo ideal seria hacer la bd sql pero eso de
momento no es posible.

puede ser q no haya exprimido el .net y q no haya hecho la aplicacion de
la
forma mas eficaz? (la verdad es q es mi primera aplicacion)

y otra cosa:
puede ser tb la forma de conexion a la bd? yo lo q hago es conectar a la
bd
una vez entro en la aplicacion. eso lo he puesto en un modulo donde pongo
mas funciones como las vaiables globales, el llenar un datagrid...etc

no se si seria mejor y si se puede hacer la conexion en cada formulario
y/o
solo conectar las tablas q te hicieran falta para ese form. no se si esto
sera posible.
esto ultimo me vendria bien para q las tablas referentes a la facturacion
solo se conectaran a la bd en la 2º aplicacion, ya q al generar la factura
tengo q ir guardando todas las lineas de un listview y cuesta bastante si
son muchas.

queria saber, aparte de opiniones sobre pq puede ir mas lento en vb .net q
envb6, 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