Visual Basic - Aplicacion en red

Life is soft - evento anual de software empresarial
   
Vista:

Aplicacion en red

Publicado por Matias (135 intervenciones) el 03/07/2008 23:35:53
Bueno chicos como están ??? quería preguntarles que debo tener en cuenta para que mi programa funcione en red, es un sistema de gestión que por ahora funciona en una sola maquina pero quiero hacerlo funcionar en red. Esta hecho el VB6 y SQLServer 2005. Que debo tener en cuenta??? como controlo los accesos a las tablas ???? me he conectado y he cargado algunos controles como un msflexgrid pero necesito saber mas donde puedo conseguir mas info????
Bueno muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Aplicacion en red

Publicado por pacopaz (173 intervenciones) el 03/07/2008 23:56:56
La gestión de acceso a tablas la hará SQL Server, así que no te preocupes mucho por eso.
Los enlaces (conexiones) tendrás que definirlos una sola vez, para todas las máquinas, así que tampoco es un gran problema.
Lo que debes tener en cuenta, de cualquier forma, es que, dado que habrá más de una persona usando el programa, los componentes, de preferencia, no estén ligados todo el tiempo a los datos directamente.
Es preferible que tomes tus datos a través de un query, los pases a colecciones o arreglos, los modifiques o añadas registros y luego hagas queries de inserción y modificación, para que no bloquees registros y, con esto, permitas que todos puedan ver los datos en el servidor.
Este tipo de implementaciones son más tardadas, por que tienes que programar más, pero son mas efectivas y eficientes, con lo que logras un mejor desempeño para tu aplicación.
Te recomiendo que estudies el uso de clases y colecciones, para que en ellas sea donde manipules los datos y no sobre las tablas en la base de datos. Hay mucha información en la red acerca de programación orientada a objetos en vb, que te será muy útil.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Aplicacion en red

Publicado por Matias (135 intervenciones) el 04/07/2008 16:45:57
Paco gracias por responderme, he elido sobre clases y colección y creo que es bastante interesante porque como dices es importante no estar accediendo constantemente a los datos por el tiempo sobre todo pero que pasa si lleno una colección con datos de alguna tabla y esta es modificada por otro usuario, como darme cuenta de esto y actualizar mi colección ???? También he leído y entendido que es mucho mas eficiente utilizar colecciones que arrays y pero realmente no estoy seguro como usarlas es decir en que circunstancias... y por ultimo una pregunta chiquita y tal vez tonta... supongamos que el sistema vende 2 productos X al cual en stock solo le quedaban 2 existencias e inmediatamente otra venta del mismo productos vende 1 eso debería controlarlo no permitiendo valores menos que 0 en la tabla ??? supongo que me daría un error y si lo capturo puedo avisarle al usuario que no puede generarse esa venta. Bueno muchas gracias por tu ayuda, estoy aprendiendo solo que en mi facultad recién estamos viendo lógica pura...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Aplicacion en red

Publicado por pacopaz (173 intervenciones) el 04/07/2008 18:56:00
Muy bien, ya estamos definiendo reglas de negocio.
Las colecciones te servirán para catálogos de información: Si estás definiendo un catálogo de productos, inventariando, etc, las colecciones son viables.
Las clases que definen objetos, deberían esecificar registros específicos.
Digamos que, para poner un ejemplo, estás definiendo objetos para facturar. Necesitarias un objeto para la factura, un objeto para una partida de la factura y una colección de partidas.
Los catálogos necesarios son el de clientes, con sus direcciones, etc y el de productos, con sus precios unitarios. Es decir, que tienes dos accessos a datos cuando abres la pantalla de factura, para cargar esos datos y los guardas, según tu preferencia, en colecciones o en arreglos globales. Son catálogos y dado que no ocupas mayormente de sus propiedades, no requerirías hacer una mayor implementación, sólo necesitas tener los valores de ellos disponibles, así que un arreglo puede llegar a ser suficiente.
Con esto, puedes hacer el llenado de la factura, opniendo la fecha, la dirección fiscal, la dirección a donde será enviada y un largo etc.
Lo que necesitarías es que, previo a guardar la factura, validaras que, para cada partida en la colección, existiera inventario para poderla surtir. Por eso definimos el objeto de partida de factura, para que este, como objeto, validara antes de guardar cada una. Esto se puede hacer desde la colección y luego de que validara todas, mandara a guardar, o que para cada una si valida, entonces que inmediatamente guarde. Así, tienes tantos accesos a datos como partidas tengas mas 1 que guardaría la factura.
Las reglas de negocio que seguramente tendrás que definir son:
Como validar: Necesitas un query que te diga si hay suficiente inventario para surtir.
Que hacer en caso de no haber inventario: Puedes cancelar el ingreso de la factura o generar un pedido para surtir inventario y luego poder surtir la factura o pedir la confirmación para eliminar dicha partida o adecuarla a la cantidad de inventario que tengas.

Como ves, es un caso de uso que, aunque simple como pueda ser una factura, definirá reglas de negocio que quizás no estén contempladas y requeriras ponerte de acuerdo con los usuarios para saber que hacer. La clave es hacer tantos accesos a base de datos como sean necesarios, en lugar de bloquear registros, para que la ejecución se haga sin problemas, pero impidiendo que otros usuarios puedan hacer algo en el sistema.
No puedo menos que hacer notar que hará falta que tu red esté en óptimas condiciones y que los queries sean también lo más eficiente posible. Y con esto me refiero a que, para validar que exista inventario, es preferible hacer un query así:
"select nCantidad - " & Cantidad & " from Articulos where cIdProducto = '" & IdProducto & "'"
y luego checar si es negativo, que hacer esto:
"select * from Articulos where cIdProducto = '" & IdProducto & "'"
para luego buscar la cantidad de inventario en el recordset devuelto y luego restárselo a la cantidad en la partida para saber si es negativo.

Espero que te sirva de referencia.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar