Problema con formularios y relaciones

Hola Experto; espero que me puedas ayudar.
Tengo una BD con un formulario llamado Gestión de Averías basado en una tabla llamada tblVehiculos cuyo campo principal es Matricula, dentro de Form principal tengo un Control de Fichas con 2 Fichas FichaAverias y FichaReparaciones.
En la FichaAverias tengo un Subformulario llamado SubAverias basado en la tabla llamada tblAverias contiene los campos; campo principal IdAverias, fAverias, tDescripcion, tMecanico, fReparado, cvOrden(casilla de verificación), esta Subform, sirve para registrar la avería que van apareciendo en el vehículo activo en el Form Principal, ya que pueden repararse en muy poco tiempo o por el contrario tras un largo periodo de tiempo.
En la FichaReparaciones, tengo un Subformulario llamado SubReparaciones basado en una tabla llamada tblReparaciones contiene los campos; campo principal tNumOrden, fOrden, fCerrada, ademas tengo un Subformulario llamado SubAveriasRepar basado en la tblAverias
Tengo las tablas relacionadas de uno a varios de esta forma
tblVehiculo (1) a (varios)tblAverias
tblVehiculo (1) a (varios)tblReparaciones
tblReparaciones (1) a (varios)tblAverias
Pero no me funcionan como quiero, ya que la intención inicial, es la de seleccionar mediante una casilla de verificación, una a una, todas las averías registradas en la ficha1, SubAverias que quiero que sean reparadas en una orden de reparación y que no tienen por que ser todas las que hay registradas para el vehículo activo, el problema es que el SubReparaciones al estar vinculado al principal por el campo Matricula y dentro de él, el SubAveriasRepar basado en la tblAverias y vinculado al SubReparaciones por el campo NumOrden, no me aparecen los datos que anteriormente he dado de alta en la ficha1 del control de ficha (el SubAverias), apareciendo todo en blanco.
Y si saco en Subformulario SubAveriasRepar del SubReparaciones y lo vinculo al principal por el campo Matricula, si que me aperencen las averías registradas anteriormente, pero al completar el SubReparaciones y comprobar las tablas, no se vinculan las reparaciones con las averías, que es lo que quiero.
Espero que me puedas ayudar. Un saludo

1 respuesta

Respuesta
1
Por lo que veo el problema efectivamente está en la forma de relacionar las tablas.
La relación entre la tabla de vehículos debe ser en primer lugar con la tabla de averías, donde debe haber un campo que identifique al vehículo (como la matrícula), la siguiente relación de la tabla de reparaciones debería ser con la tabla de averías no con la de vehículos. Ya que para que haya una reparación siempre debe haber una avería. Esta relación debería ser a través de un campo que identifique por ejemplo un número de orden de reparación que incluya los códigos de las averías. Inténtalo así y si no lo consigues, voy a necesitar que me especifiques todos los campos que tienes en cada tabla de las que mencionas.
La forma en que estás definiendo las relaciones genera conflictos entre las tres tablas.
Hola Experto, siento la tardanza pero ha sido un fin de semana difícil.
Decirte que he probado ha relacionar las tablas como me comentaste, claro, que la parte "que incluya los códigos de las averías" no lo entendí muy bien, no se si te referías a que el campo nº de Orden lleve incluido el código de la avería o por el contrario, que ademas del nº de Orden, creara otro campo para introducir el código de cada avería a reparar.
Bueno sin más los campos de las tablas son:
tblVehiculos contiene los campos; campo principal Matricula, NombDescripcion, CODFAB, Observaciones
tblAverias contine los campos; campo principal IdAverias, fAverias, tDescripcion, tMecanico, fReparado, cvOrden(casilla de verificacion).
tblReparaciones contiene los campos; campo principal tNumOrden, fOrden, fCerrada
Un SALUDO
Las relaciones entre tres tablas deberían ser normalmente en cascada, o mejor dicho se pueden relacionar dos tablas utilizando a otra de conexión. Por ejemplo en tu caso:
Tabla Averías Tabla Vehículos Tabla Reparaciones
IdAverías Matricula tNumOrden
fAverias NombDescripcion fOrden
tDescripción CODFAB fCerrada
tMecánico Observaciones
fReparado
cvOrden
Yo lo haría de otra manera. Tendría una tabla con una lista de posibles averías todas las que tengas, que además puedes ampliar cuando clasifiques una nueva. Esta tabla tendría un código de avería, descripción de la avería.
Efectivamente otra tabla de vehículos tal como la tienes. Y una tabla de Reparaciones con un código principal no duplicado que puede ser la combinación de un número de orden y un numeral consecutivo para una orden de reparación de distintas averías. Campo para el vehículo (Matrícula). Otro campo para una orden general(puede duplicarse, ya que puede contener varias órdenes específicas), otro campo para una orden específica (reparación de una avería particular), campo fecha de orden, campo fecha de reparación, campo para identificar al mecánico.
Entonces las relaciones serían teniendo como centro la tabla de reparaciones, el campo matrícula relacionado de uno a varios desde Vehículos a Reparaciones y desde la tabla averías a la tabla reparaciones una relación una a varios del campo que identifica código de averías con el código orden específica de reparaciones.
Si no me he explicado correctamente o tienes alguna duda con esto, te podría explicar mejor gráficamente en un email.
Hola, según tu contestación anterior, ¿Cómo tendrían que ir los Formularios y Subformularios para que se relacionen las tres tablas?, porque no lo veo.
Disculpa la tardanza. Intentaré explicarlo con las limitaciones de este formato de respuesta.
Sería algo así:
Tabla Vehículo Tabla Reparaciones Tabla averías
Matrícula (*) IdReparacion IdAveria (o)
NombDescripcion Vehículo (*) Descripcion
CODFAB Mecánico
Observaciones IdAveria (o)
                                                Fechaorden
                                                 Fechareparado
A cada tabla le puedes añadir el resto de los campos que necesites (esto es sólo un ejemplo), de hecho te recomendaría tener una tabla de mecánicos (por ejemplo).
Los símbolos entre paréntesis te indican cuales campos de cada tabla están relacionados con sus similares de las otras. La relación debe ser siempre de uno a varios desde las tablas averías y vehículos hacia la de reparaciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas