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

Preguntas similare

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






Respuesta Responder a este mensaje
#2 floyd303
28/09/2006 - 13:27 | Informe spam
Hola!

Viendo tu codigo a mi solo se me ocurre una cosa. Tampoco estoy seguro
que te vaya a mejorar el rendimiento de la aplicacion pero no me
extrañaria nada que si que se mejorase.
A ver... en la primera funcion: Gestionar, no necesitas iniciar una
transaccion. Las sentencias SQL de por si solas ya estan incluidas en
una transaccion. No necesitas crear una especifica para UNA sola
sentencia SQL.
Otra cosa es que vayas a ejecutar dos sentencias SQL seguidas y quieras
asegurarte de que o se cumplen las dos o no se cumple ninguna, en cuya
caso esta justificadisimo meterlas en una transaccion.
Otra cosa que cambiaria es poner la conexion en un Singleton (digamos
una variable global a la aplicacion): se abre al arrancar el programa y
se cierra al finalizarlo, de tal manera que tu funcion seria algo asi:

Public Sub Gestionar(ByVal sql As String)
Dim Comando As OleDbCommand = New OleDbCommand
Comando.Connection = ConexionGlobal ' Objeto de conexion global
Try
Comando.CommandText = sql
Comando.ExecuteNonQuery()
Catch Errorcito As Exception
MsgBox("Operación no realizada", MsgBoxStyle.Critical,
"Error de
la aplicación")
End Try
End Sub

A ver, lo de las transacciones lo puedes probar enseguida, no te va a
tocar mucho codigo y lo mismo le ves una mejora.
Lo otro es quizas un poco mas complicado de realizar, aunque tampoco
mucho.

Por ultimo, si realizas constantemente las mismas consultas yo
consideraria crear consultas preparadas. Estas son unas consultas
precompiladas a las que solo le tienes que especificar los parametros
definidos antes de ejecutarlas. Son muy rapidas y seguramente mejoren
el rendimiento de la aplicacion, pero son mas costosas de implementar.

Espero que todo esto te ayude
Saludos
Roberto M. Oliva


Sonia ha escrito:

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


Respuesta Responder a este mensaje
#3 Cid
28/09/2006 - 13:32 | Informe spam
No estoy de acuerdo Bingen las aplicaciones hechas con bbdd access no
permiten importar solo los registros que necesitas, cunado pides por ejemplo
una linea de albaran lo que ocurre es que se traen todas las lineas de la
tabla y una vez cargadas se selecciona la que se pidio...en sql server eso
no ocurre, al solicitar una linea solo viene esa. salu2.

"Bingen" escribió en el mensaje
news:%
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











Respuesta Responder a este mensaje
#4 floyd303
28/09/2006 - 18:35 | Informe spam
Hola Cid!

No se porque dices eso... en Access se puede traer un DataTable con
aquellos registros exactos que se necesiten de toda la tabla. No es
necesario traerse siempre la tabla entera.
Exactamente igual que en SQLServer.

Saludos
Roberto M. Oliva

Cid ha escrito:

No estoy de acuerdo Bingen las aplicaciones hechas con bbdd access no
permiten importar solo los registros que necesitas, cunado pides por ejemplo
una linea de albaran lo que ocurre es que se traen todas las lineas de la
tabla y una vez cargadas se selecciona la que se pidio...en sql server eso
no ocurre, al solicitar una linea solo viene esa. salu2.

"Bingen" escribió en el mensaje
news:%
> 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
>>
>>
>>
>>
>>
>>
>
>
>
Respuesta Responder a este mensaje
#5 Bingen
29/09/2006 - 09:01 | Informe spam
Tambien estaría la posibilidad de portar la base de datos Access a Sql
Server Express. Esto deberías de estudiarlo porque segun como tengas
configurado el código tal vez te suponga muchos cambios o quizás solo tengas
que realizar unas pequeñas modificaciones en ciertas sql-s.

Recuerda que el Sql Server es una versión gratuita del Motor del SQL Server
con ciertas limitaciones pero que sus prestaciones superarán al bd de
access. Además si las el número de operadoras aumenta y con ello las
pretensiones del programa, la evolución al Sql Server es directa.

Un saludo
Bingen



"Cid" escribió en el mensaje
news:
No estoy de acuerdo Bingen las aplicaciones hechas con bbdd access no
permiten importar solo los registros que necesitas, cunado pides por
ejemplo una linea de albaran lo que ocurre es que se traen todas las
lineas de la tabla y una vez cargadas se selecciona la que se pidio...en
sql server eso no ocurre, al solicitar una linea solo viene esa. salu2.

"Bingen" escribió en el mensaje
news:%
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
















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