Ayuda planteamiento consulta y formulario access

Buenas tardes tengo una consulta con los campos de varias tablas que son (socio, tipo cuota, concepto cuota, descuento, importe y fecha) esta consulta lo que me dice es cual es la última cuota que tiene elegida cada socio.

Lo que quiero es el formulario FSocios colocar un botón que me abriera un formulario filtradouualrio por el campo socio, hasta hay bien.

La consulta que hago es que ese formulario me traiga los campos de la consulta que comente anteriormente, pero debería tener un campo más llamado mensualidad (para saber que mes pago) y el un campo fecha para poner la del día que paga. Ya que la de la consulta no me valdría porque me da la fecha del día que contrato la cuota actual.

Gracias por adelantado

1 Respuesta

Respuesta
1

Lo que necesitas es otra tabla para registrar los pagos, que relacionarás con tu tabla de cuotas. A esa nueva tabla le pones los campos que necesites para controlar los pagos (fecha pago, mensualidad,...)

Sí eso es lo que pensé y realice una tabla pagos con los campos que necesito de la consulta y relacionar la en una nueva consulta con los campos socio, tipo cuota, concepto cuota, descuento, importe, ( de la consulta de CCuotaActual) y el campo fecha y mensualidad de la tabla pagos.

Pero al ejecutar la consulta no me devuelve valores .

Y entonces cuando abro el formulario filtrado por cada socio no me dice cual es la cuota que tiene actual no nada,

Tienes que hacer una tabla nueva para los pagos, con campos nuevos, no hacerla sobre al consulta. Luego la tabla de pagos la relacionas con la tabla cuotas, para tener los pagos asociados a cada cuota de cada socio.

Una vez que tengas las tablas y relaciones correctamente, es cuando harías una consulta sobre esas tablas, y el formulario sobre esa consulta.

¿Es decir realizar las consultas como las que realice antes pero ya sobre estas verdad?

¿Y luego para guardar los datos en la tabla de pagos con una sentencia sql para insertar los campos en la tabla socios donde corresponda no?

Sí, esa es una forma correcta de hacerlo

¿Y ya para completar la pregunta sí yo hago un su formativo continuo sobre la tabla te pagos pero solo quisiera ver los del año en el que estoy en los criterios de la consulta del campo fecha que tengo que poner? O para filtre lo por meses

Bueno he dicho desde la consulta por poner un ejemplo pero sí creo un formulario cn dos texbox tipo fecha para poner desde y hasta así con un botón y que te abriera el historial en un formulario continuo entre las dos fechas.

así no haría falta hacer tantas consultas. No se sí sería posible o es más complicado.

Un saludo

Para hacer la consulta por año actual, una opción sería añadir en tu consulta una columna nueva que te saque el año, poniendo en Campo lo siguiente:

Año: Año(Fecha)

Siendo Fecha el nombre del campo y el Primer Año el nombre que tendrá el campo.

Luego, como criterio de ese nuevo campo, le pondrías una de estas dos: =Año(Ahora())

=Año(Fecha())

Podrías hacer lo mismo para meses con la función Mes-> Mes: Mes(Fecha)

La segunda opción que planeas es otra posible opción. Ninguna de las dos son complicadas.

Haciéndolo de la segunda manera solo habría que realizar un formulario continuo filtrando lo a través de los texbox no?

quiero desviar que no haría falta añadir el campo año y fecha como anteriormente.

un saludo

Correcto

Buenas tardes, me gustaría que aconsejaras en como puedo hacer algunas cosas, antes de nada decir que hay gente que paga por mes, otros por trimestre (Primer Trimestre (Enero, Febrero, Marzo), Segundo Trimestre, etc..)y otros Anual.

La estructura de la tabla TPagoCuota es:(Socio, Nombre, Tipo, Concepto, Descuento, Importe, Mensualidad, Fecha)

A continuación te pongo los valores que de recogen en los siguientes campos.

Tipo(Mensual, Anual, Trimestral, Semestral,Única)Se refiere a la cuota

Mensualidad (Enero, Febrero,..., Primer Trimestre, etc...)

Como puedo plantearme para saber por ejemplo los que tienen cuota mensual si pagaron el mes de Enero o no sin tener que ir uno por uno que hay lo sabría je je. E igual para los del trimestre.

Como lo debo de enfocar de la manera más sencilla posible si es que la hay.

Y en cuanto a la pregunta de hacerlo de con dos texbox txtdesde y txthasta para saber los pagos del mes o entre dos fechas, se hacerlo filtran dolo en la consulta no en el botón del comando todo, me explico haría una consulta sobre la tabla TPagoCuota y en el criterio Fecha pondría lo siguiente:

>=[Forms]![FConsultaPagos].[txtDesde].[value] Y <=[Forms]![TOTAL VALES].[txtHasta].[value]

Suponiendo que el Formulario lo llamase así y en un botón pondría el siguiente código:


Dim resp As Integer
resp = MsgBox("¿Desea imprimir ahora?", vbQuestion + vbYesNo, "CONFIRMAR")
If resp = vbYes Then
DoCmd.OpenReport "ConsultaPagos"
Else
DoCmd.OpenReport "ConsultaPagos", acViewPreview
End If
DoCmd.Close acForm, Me.Name


El informe estaría creado en base a la consulta.

Pero yo quiero que me de los valores en un formulario y ponerle un botón por si quisiera imprimirlo.

Un saludo

Para saber los que tienes una determinada cuota tendrás que poner como criterio de la consulta en Tipo el tipo de cuota que estás buscando (mensual, semestral..) y en Mensualidad el valor que quieres buscar. Lo puedes hacer igual que el filtro de fechas, haciendo referencia a esos valores que pongas en cuadros de texto en un formulario (los puedes añadir al mismo de las fechas)

Si no quieres mostrar los resultados en un informa, haz un formulario sobre la consulta y ábrelo desde el botón.

Si pero la consulta iría sobre las tablas TCuota, ¿TPagoCuota entonces y en el criterio de cuota lo que este seleccionado en el txt del Formulario verdad?

¿Cómo seria el código para ponerlo todo en el botón en vez de ponerle el criterio en la consulta?

Por cierto realice un formulario sobre la consulta CCuotaSocioActual y le añadí los campos que necesitaba que son todos los de la tabla TPagoCuota menos el campo pagado (Si/no) así traigo la cuota que tiene activa el socio y yo solo hay que cubrir la mensualidad y fecha de pago y en el botón de comando puse este código:

Private Sub cmdAceptar_Click()

Dim miSql As String
Dim miSql2 As String
miSql = "insert into TPagoCuota (Socio,Nombre,Tipo,Concepto,Descuento,Importe,Mensualidad,Fecha)values(Socio,Nombre,Tipo,Concepto,Descuento,Importe,Mensualidad,Fecha)"
miSql2 = "UPDATE TPagoCuota SET Pagado=true WHERE [Socio]=" & Me.Socio
DoCmd.RunSQL miSql
DoCmd.RunSQL miSql2
DoCmd.Close acForm, Me.Name

End Sub

falta ponerle del docmd.serwarnings=False pero era para porbar el funcionamiento y funciona pero me dice que va actualizar tantos registro como veces el codigo socio coincida eso da igual verdad?

NO, a la sql2 tienes que ponerle más criterios en el where, para que te marque como pagada sólo la cuota que quieres pagar, la que tenga Pagado=False, por ejemplo, o la que coincida con tipo, concepto y mensualidad.

Como seria así:

miSql2 = "UPDATE TPagoCuota SET Pagado=true WHERE [Socio]=" & Me.Socio & [Mensualidad]=& Me.Mensualidad

o así

miSql2 = "UPDATE TPagoCuota SET Pagado=true WHERE [Socio]=" & Me.Socio and [Mensualidad]=& Me.Mensualidad

De ninguna de las dos:

miSql2 = "UPDATE TPagoCuota SET Pagado=true WHERE [Socio]=" & Me.Socio & " AND [Mensualidad]='" & Me.Mensualidad & "'"

si Mensualidad es texto, o

miSql2 = "UPDATE TPagoCuota SET Pagado=true WHERE [Socio]=" & Me.Socio & " AND [Mensualidad]=" & Me.Mensualidad

Si Mensualidad es un número

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas