Problema con relaciones

Estoy haciendo una BD y necesito tu ayuda. Tengo una tabla llamada "tblVehiculo" [Matricula(clave principal), NombreVeh, CodFrab] otra tabla "tblAverias" [IdAverias(clave principal), fAveria, tDescripcion, tMecanico, fReparado, cvOrden) y otra tabla "tblReparaciones" [NumOrden(clave principal), fOrden, fReparacion]. También tengo creado un formulario "Gestión de Averías" cuyo origen del formulario es la tabla tblVehiculo dentro tengo un control de fichas, en la primera ficha tengo un Subformulario "SubAverias" en modo único y dentro de el, otro Subformulario "SubAveriasHist" en modo continuo que se actualiza automáticamente para ver el histórico del vehículo. En la segunda ficha y aquí esta el problema quiero poner un Subformulario para las Reparaciones, la idea que tengo (y esto es lo que no se como hacer) es tener el "SubReparaciones" y otro Subformulario "SubAveriaRepar" de manera que en este ultimo aparezcan todas las averías registradas anteriormente y que no se ha reparado y mediante el cvOrden(casilla de verificación) se seleccionen las que queremos reparar en la nueva orden y que al rellenar los campos de SubReparaciones se relacionaran las averías seleccionadas con el NumOrden y este a su vez con la Matricula.
La verdad es que no se si esto es posible con access 2007, pero si no lo es, ¿podrías sugerime con algún ejemplo como hacerlo?
P.DE No se si me he explicado bien. Espero que si y que puedas ayudarme.
Un SALUDO

1 Respuesta

Respuesta
1
He creado una pequeña BD que te explico para ver si te vale en tu objetivo.
He situado la base y un fichero de ayuda en la sección de DESCARGAS de mi página.
http://personales.ya.com/pachaweb/
Tablas:
La estructura es semejante a la tuya lo único que en todas las tablas incorporo un campo de relación con las demás tablas.
También en vez de verificadores, he incorporado campos numéricos que relacionados con tblMaestroSituacionAveria nos da un abanico de posibilidades mayor.
0.-Pendiente
1.-En proceso
2.-Finalizada
3.-Desestimada
Esto es una manera útil de poner múltiples situaciones a un registro.
Formularios:
Frm000Principal Situamos los menús para los distintos formularios.
FrmGestionAverias Poniendo una matricula en el desplegable, accederemos a las distintas pestañas.
Observarás que no uso controles de fichas, y es debido a que si trabajas con muchos datos y sobre un servidor, los controles de fichas abren todas las tablas y suelen ralentizar otros procesos. Evidentemente estoy hablando de optimizar aplicaciones con cientos de miles de registros y una media de más de 15 personas conectadas, lo que en tu caso a lo mejor no hace falta.
Lo que yo suelo hacer es poner botones y crear un formulario (en este caso Secundario00) y a través de cada botón con el código Me.Secundario00.SourceObject = "nombre del formulario", voy abriendo cada formulario.
Este formulario Secundario00 tiene vinculado el dato Matricula en campo secundario y principal.
Una vez que pongamos por ejemplo la matrícula 5152 nos aparecerá los datos de la tabla tblVehiculo con esa matricula.
En la pestaña Total Averías he agregado 4 cabeceras de averías, que en la pestaña desglose de averías atomizamos por separado.
Pulsando en Desglose de averías se sitúa en la primera que nos describe como Golpe lateral derecho, y su desglose lo he realizado con 4 acciones con su presupuesto y su situación. Pulsando en las flechas de más abajo, iremos pasando por 4 averías y desgloses del coche (5152).
Parece que te interesa incorporar un número de orden a cada acción, por lo que aún que no entiendo la operativa, he creado un formulario que te puede ayudar a tu objetivo.
Este formulario es el segundo botón del menú principal. Asignar Número de orden.
En este formulario visualizaremos las reparaciones según un filtrado. En el ejemplo sólo filtro por cvReparado (Pendiente, En proceso, etc.), y tras el filtrado podremos poner un número de orden y actualizarlo, o una situación y actualizarla,
También podríamos ponerlo en cada registro por separado.
Te agradezco enormemente las molestias que te has tomado en mi problema, he aprendido varias cosas muy interesantes que no sabia, lo cual es bueno.
He intentado adaptar tu respuesta a mi bd, pero no he conseguido lo que pretendía. Ya que mi base de datos va más encaminada al control de Averías, Revisiones, ITV, Engrases y Cambios de aceites, es por eso que de la tblReparaciones solo necesito los datos de los campos que tengo, NumOrden(clave principal), fOrden, fReparacion, de esa tabla solo quiero saber si tiene Orden de Reparación y cuando se abrió y se cerro cada Orden, de los detalles de la reparación en sí, se encargan otros. Yo lo que realmente necesito es si tengo en la tblAverias las averías (1. Golpe lateral derecho, 2. Problema en encendido, 3. Problema en alumbrado, 4. Ruido en lateral frontal derecho, 5. Rueda trasera dcha Pinchada, etc, etc, etc...), que a la hora de meter los datos de tblReparaciones "20/10/10(fOrden), 2010MEC00145(NumOrden), en blanco (fReparacion)" poder seleccionar de todas las averías de la tblAverias, las que han de ir con ese numero de orden en concreto, ya sea una sola avería que estaría relacionada con los datos (20/10/10 2010MEC00145) que 10 averías, que de igual modo, cada una de ellas estarían relacionadas con los datos (20/10/10 2010MEC00145).
Bueno no se si me he explicado correctamente, de todos modos, muchísimas gracias de nuevo por el interés mostrado.
Un Saludo
Un poco viene a ser como el botón de Asignar Número orden de la aplicación que generé para este problema.
Si te fijas se usa una consulta de actualización de datos que incorpora el numero de orden en la tabla averías. Lo que tendrías que hacer es algo semejante, y que la consulta de actualización solo la realizara con datos de la tblAverias que no tuvieran numero de orden y que tuvieran marcado un campo que usarías como verificador.
Así en un formulario de tblReparaciones con un subformulario de tblAverias con el único filtro de numero de orden nulo, marcaríamos en un campo de verificación (que pertenecería a tblAverias) las averías que queremos asignar al numero de orden que tengamos puesto en tblReparaciones, y a través de una consulta de actualización, incorporaremos ese dato en un campo de tblAverias.
Después de este coñazo, espero que puedas pillar la idea.
Ya me comentarás.
Una aperta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas