Gestión en Access 2010

Soy nuevo en Access, mi nombre es Marcos y tengo 2 consultas...
1 - Tengo 3 tablas, en la principal "expedientes" tengo un campo (origen)
Qué esta relacionado a otra tabla "origen"(1 a 1), y esta a su vez con
otra tabla "proyectos"(1 a muchos), la consulta es, como hago para que
se habiliten solamente las sub opciones previstas en "proyectos" cuando
seleccione "origen"? ¿Necesito mas tablas?, ya tengo las relaciones
hechas, cuando selecciono un "origen" me muestra todas las opciones de
"proyectos", yo quiero que solo muestre las asignadas al origen elegido.
Aclaro que cuando selecciono un "proyecto" que se que corresponde a un
"origen" los datos se guardan normalmente, pero si intencionalmente me
equivoco (para verificar la relación) me salta el error de relaciones,
pero bueno, el tema es que no quiero que se muestren todas las
opciones...
2 - Por otra parte, tengo otra tabla "datos contables"
Que tiene un campo "monto" que debe primero totalizarse sobre varias
entradas de la misma tabla, luego mostrar el total en la tabla
"expedientes" y luego descontarse de otra tabla "presupuesto". ¿Esto cómo
se hace? Vi que se usa "DSuma", ¿es así? ¿Cómo?
Desde ya muchas gracias por su tiempo.
Adjunto una cap de las Relaciones a modo ilustrativo.

https://dl.dropbox.com/u/35406079/Relaciones.jpg

1 respuesta

Respuesta
1

Perdón por tardar en contestar, pero estuve un poco liado estos días.

Me he liado un poco con tu consulta, pero creo que ya lo tengo claro:

Lo que pretendes es, en un formulario Expedientes, seleccionar un exp_origen mediante un cuadro combinado, que muestre todos los orígenes que existen en la tabla Origen, y luego, cuando llegues a exp_proyecto, que en el cuadro combinado te aparezcan sólo los proyectos que tienes su origen en el mismo origen que el seleccionado en el campo exp_origen. Es así, ¿no?

Para ello, crea el formulario usando el asistente, lo confuguras a tu gusto, y al final de todo le das a modificar diseño. Te colocas en el campo exp_proyecto, sacas sus propiedades con click derecho, y vas a la pestaña Datos. Vas a la segunda fila (Origen de la Fila, borras lo que hay y le pones esto:

SELECT Proyecto.pro_Id, Proyecto.pro_proyecto FROM Proyecto WHERE (((Proyecto.pro_ori_id)=[Formularios]![Expedientes]![exp_origen]));

Fíjate que esté columna dependiente 1, y en la pestaña Formato, Número de columnas = 2, y en ancho de columnas, la primera sea 0cm.

Luego vas a la pestaña Eventos, y en Al entrar le generas el siguiente código, dándole a los puntitos que aparecen a la derecha:

Private Sub exp_proyecto_Enter()

'Si exp_origen está en blanco, avisamos y nos situamos en él para rellenarlo
If IsNull(Me.exp_origen) Then
MsgBox "Primero tienes que seleccionar un origen", vbInformation, "AVISO"
Me.exp_origen.SetFocus
Exit Sub
End If

End Sub

Y para acabar, en exp_origen, pestaña eventos, en Después de actualizar, le generas este otro:

Private Sub exp_origen_AfterUpdate()
'Actualizamos el origen de exp_proyecto
Me.exp_proyecto.Requery
'Borramos el valor que pudiera haber
Me.exp_proyecto.Value = Null
End Sub

La segunda parte tampoco la entiendo bien, pero te explico cómo se usa DSuma

DSuma("Nombre del campo que quieres sumar";"Nombre de la tabla donde se encuentra el campo";"Criterio para limitar la suma")

En tu caso, si quieres sumar el total de dat_monto para cada Expediente, la expresión sería algo así:

DSuma("[dat_monto]";"[Datos Contables]"; "[dat_exp_Id]=" & [exp_Id])

Cualquier cosa me comentas.

Gracias Sveinbjorn, ya probé tu recomendación para el punto 1 y es exactamente lo que necesitaba, "combos en cascada", mil gracias...

Pero para el punto 2 necesito un formulario donde se vea algo así:

Aclaración: Previsto es el monto previsto para cada origen, que se obtiene de [pro_monto], Ejecutado es el monto ejecutado por cada origen, que se obtiene de [dat_monto] y Saldo es claramente la diferencia, que lo necesito como dato para la reasignación de fondos, Ademas debo poder editar lo Previsto para ajustar saldos.

Eso es todo, que no es poco ya lo sé, debe hacer falta VBA sin dudas, pero bueno, ese es mi problema, no se si necesito mas tablas o cómo... cualquier ayuda será bienvenida, gracias nuevamente.

Estoy con tu consulta, pero me ayudaría tener tu BD con algunos datos de ejemplo, para no tener que construirla yo y rellenarlos sin saber el tipo y eso.

¿Me puedes enviar una copia comprimida? Mi correo es [email protected]

Ya te contesté al mail. También comento aquí la solución por si a alguien más le interesa.

Lo primero es crear una consulta de totales sobre la tabla Datos Contables, cogiendo los campos dat_exp_id y dat_monto. El campos dat_monto lo agrupas por suma.

Luego haces otra consulta de selección, seleccionando ori_origen de la tabla Origen, pro_proyecto y pro_monto, de la tabla Proyectos, SumaDedat_monto de la consulta que acabamos de crear y añadimos una columna nueva "Saldo", como diferencia entre pro_monto y SumaDedat_monto.

A los campos de la consulta los renombramos a: Origen, Proyecto, Previsto, Ejecutado y Saldo

Luego creas el formulario sobre esta consulta, en distribución Tabular. En vista diseño, seleccionas el cuadro de texto correspondiente a Previsto, y en el evento Al hacer Doble Click, le generamos el siguiente evento:

Private Sub Previsto_DblClick(Cancel As Integer)
DoCmd.OpenTable "Proyecto", , acEdit
End Sub

Luego, para que se actualicen los datos del formulario, colocamos un botón, con el siguiente código:

Private Sub cmdActualizar_Click()
Me.Requery
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas