PDA

Ver la Versión Completa : Aplicacion campañas de cereales


analia1979
18-07-2007, 01:27:35
Hola a todos...
No se que en foro iria esta pregunta por eso lo puse en esta.
Tengo que hacer una aplicacion que cuando abra el usuario pueda elegir la campaña sobre la que quiera trabajar, seria como el ejercicio contable a abrir.
A partir de ahi que todo lo que se cargue sea sobre ese campaña.
Las tablas que tengo son Campañas, los Establecimientos y la relacion de estas dos CampañasEstablecimientos, que seria los establecimientos que entran en esa campaña.
Mi duda es como mantener la campaña que haya ingresado para que saber que todo lo que se ingrese de ahi en mas es sobre esa campaña y no de otra.
Tengo que mantener una variable, pero eso me parece medio medio.
Si alguien me pudiera guiar mil gracias.

mamcx
18-07-2007, 02:52:50
Pues sera medio-medio pero es la manera de hacerlo.

Una forma mas elegante es usando una estrategia similar al concepto de sesion en sitios web y crear una clase con los datos de la sesion y usuario actual:


TSesion= class
Usuario:TUsuario;
EmpresaActual:TEmpresa;
..
..

roman
18-07-2007, 03:29:39
La mayoría de componentes de acceso a datos, sino es que todos, manejan una componente que centraliza la conexión, DataBase, TSQLConnection, TADOConnection, TMyConection, etc, y todos los demás, tablas, queries, etc. se conectan a través de él. Lo único que tendrías que hacer es seleccionar los parámetros de la conexión correspondientes según la campaña que escoja el usuario.

// Saludos

afxe
18-07-2007, 09:16:08
Como digo, depende. Si la información a recabar por campaña no es mucha y estás empleado algún RDBMS (Interbase, Firebird, Mssql...), yo soy partidario de añadir un par de campos en cada tabla de movimientos: Ejercicio y Campaña. Al realizar tus consultas puedes tener dos variables que indiquen qué ejercicio y campaña es el que está activo y cada vez que realices altas asignar por defecto el ejercicio y la campaña activa. ¿Ventajas? Todo está en una sola base de datos, si necesitas realizar comparaciones interanuales es mucho más fácil, el sistema de copias de seguridad se simplifica (un solo fichero), los ficheros maestros son comunes para todos los ejercicios, ahorrándote el proceso de cierre y apertura con importación de datos, el mantenimiento de los datos de los maestros también se simplifica, las cosas sólo se modifican una vez. Hacer un seguimiento de campañas por establecimiento, por ejemplo sería una simple consulta SQL, si lo tienes dividido en bases de datos te supone recorrer varias bases de datos y llevar un mantenimiento a parte de las mismas, para saber cuantas hay y qué contienen....

El único problema es la masificación de datos en los archivos de movimientos. Si no usas más de 4 índices y no vas a mantener más de cinco años en máquina puedes valorar unos 250.000 registros por año, si pasas de esa cantidad sí pensaría en dividir la base de datos por ejercicios.

Espero no haberte liado.
Saludos.

analia1979
18-07-2007, 16:20:03
Mil gracias a todos.
Afxe te entendi claramente, y esa es la solucion que tenia pensado, mi problema era como mantener esa variable de sin que se pierda.....

Saludos.

afxe
19-07-2007, 09:46:29
Puedes usar un .ini o, mejor aún, el registro de sistema para guardar los últimos valores con los que ha trabajado un usuario, o si tienes una tabla de años-campañas con valores por defecto puedes tener un campo que marque cual es la campaña activa. Si es multiusuario y tienes una tabla de usuarios para el control de acceso puedes almacenar ahí también ese valor. También puedes abrir la aplicación cargando por defecto los valores de la última campaña almacenada, y tener una barra de botones o una caja de herramientas donde el usuario pueda seleccionar rápida y fálcilmente el año y campaña con la que trabajar.

Saludos.