|
Os cuento.
Toda la estructura de la base de datos de mis aplicaciones está en un fichero llamado DBGes.ini, que contiene algo parecido a esto...
[Tablas]
Tabla1=Clientes
Tabla2=Proveedores -------> Relación de todas las tablas
Tabla3=Articulos
[Clientes]
Campo1=CODIGO,C,6,0
Campo2=NOMBRE,C,40,0
Campo3=TOTALCOMP,N,12,2 ----> Descripción de cada una de ellas
Campo4=FECHAUC,D, (Nombre del campo,Tipo,Longitud,Decimales)
Campo5=OBSERVA,B,
..etc
Indice1=CODIGO,CODIGO,"" ----> Indices para esta tabla
Indice2=NOMBRE,NOMBRE,"" (Nombre del índice,campo (si es único),Campos(si son más de uno)
[Proveedores]
Campo1=CODIGO,C,6,0
Campo2=NOMBRE,C,40,0
..etc
Indice1=CODIGO,CODIGO,""
Indice2=NOMBRE,NOMBRE,""
[Articulos]
Campo1=CODIGO,C,20,0
Campo2=DESCRIPCIO,C,40,0
Campo3=PVP,N,12,4
..etc
Indice1=CODIGO,CODIGO,""
Indice2=DESCRIPCIO,DESCRIPCIO,""
De esta manera relaciono todas las tablas y sus campos. En mi programa hay una opción para regenerar las tablas y actualizarlas en función de los campos de este archivo. Este archivo es común para todas las instalaciones.
Al mismo tiempo hay otro fichero que se llama DBGesLocal.ini en el cuál meto las personalizaciones de cada cliente si las hay. La estructura es la misma que el del general, si un campo de una tabla se repite en el DBGesLocal.ini se usan las especificaciones de este último y si no existe se agrega a los del fichero general. De esta manera cuando actualizo el programa solo actualizo el DBGes.ini pero el DBGesLocal.ini no lo toco con lo cuál se mantienen los cambios específicos para ese cliente.
Por otro lado tengo un montón de componentes propios como son uno para formularios con todas las opciones ya predefinidas de adelante, atrás, final, crear, etc. y dentro de ese formulario inserto componentes propios para edits, combobox, grids, etc. asociados al mismo y que tienen todas las propiedades que necesito de tipo de campo, color, longitud, tabla, campo, etc. Cuando creo un formulario determinado lo primero que hace es leer el fichero txt asociado para ver si tiene que modificar o crear campos nuevos e igualmente esos ficheros txt pueden ser locales y no se tocan cuando se actualiza el programa. De esta manera puedo personalizar el 80% del programa sin tocar una sola linea de código.
Ejemplo de un fichero txt para el fichero de almacenes:
[Formulario]
FuenteNombre=MS Sans Serif
FuenteTamano=8
FuenteColor=-2147483640
Titulo = Fichero de Almacenes
Ancho=399
Alto=137
Color=-2147483633
Tabla=Almacenes
Indice=CODIGO
Impreso=ListadoAlmacenes.txt
[Elemento1]
Control=TNTEdit
Nombre=TxtCodigo
Texto=TxtCodigo
Color=11777023
Alineacion=Izquierda
LocalTabla=Almacenes
LocalCampo=CODIGO
VisibleConsulta=Si
VisibleEdicion=Si
VisibleInsercion=Si
ActivoConsulta=Si
ActivoEdicion=No
ActivoInsercion=No
Y=38
X=86
AY=21
AX=24
FuenteNegrita=Si
FuenteItalica=No
FuenteSubrayada=No
FuenteTachada=No
Ajuste=Si
Puntacion=No
Decimales=0
Longitud=2
Tipo=Entero
INTEGRIDADTabla=ALMACENES
INTEGRIDADCampo=CODIGO
INTEGRIDADIndice=CODIGO
INTEGRIDADValor=CODIGO
EventoCambio=No
Indice=No
No sé si habreis entendido algo de todo este rollo pero si quereis os puedo dejar una copia del programa para que veais un poco como está orientado.
Saludos
|