Poner en Informe el valor de un campo del primer y ultimo registro de un formulario continuo filtrado por rango de fechas.

En un formulario continuo que depende de la tabla "T_Contabiidad" se van anotando todos los movimientos contables (Ingresos, Gastos y saldo.) La idea es que al filtrar los registros del formulario continuo por rango de fechas,, nos ponga el saldo que había al inicio del periodo y el que hay al final del mismo.

Agradecería que algún experto me orientase acerca de como hacerlo.

2 Respuestas

Respuesta
1

Puede obtener los saldos de varias formas:

1Con una consulta SQL

2 Con Dfirst("Saldo","T_Contabilidad","fecha Beteewn

3. Clonando el formulario

Le dejo esta idea. Con las opciones 2 y 3

Formulario con el salo inicial

FORMULARIO CON EL SALDO FINAL

En el formulario están 2 veces los saldos, uno para el cálculo con Dfirst() y DLast() y el segundo, clonando el formulario.

CÓDIGO DEL BOTÓN VER SALDO

Private Sub btnCalcular_Click()
' I - FORMA - Con funciones de agregado
  Dim strAux As String
  If Me.fdesde < Me.fhasta Then
   strAux = "fecha_rec Between " & "#" & Format(Me.fdesde, "mm/dd/yyyy") & "#" & " AND " & "#" & Format(Me.fhasta, "mm/dd/yyyy") & "#"
   Me.Filter = strAux
   Me.FilterOn = True
    Me.ctlInicial = DFirst("[monto]", "T_Contabilidad", strAux)
    Me.ctlFinal = DLast("[monto]", "T_Contabilidad", strAux)
  End If
'II - FORMA - Clonando el formulario
  Dim miRS As Recordset
  Set miRS = Me.RecordsetClone
  miRS.MoveFirst
  Me.ctlsaldoIn2 = Me.monto
  miRS.MoveLast
  Me.ctlsaldofin2 = Me.monto
End Sub

Esta es una idea, puede mejorarla.

Tenga presente si no hay un ID o número consecutivo cuando hay registros de la misma fecha pueden existir incoherencias.

Respuesta
1

Vamos por partes. Dices de un informe. Por otro lado hablas de ingresos y gastos en un formulario continuo.

Si tengo la tabla Movimientos con FechaMov, Ingresos, gastos y Saldos y construyo un informe como el de la imagen

En el cuadro de texto texto11 que es el de Saldo Inicial, le pongo como origen de control el propio campo Saldo, ya que me cogerá el primero de ese período.

Desde el formulario Movimientos, donde voy recogiendo los mismos

Los cuadros de texto donde voy a escribir el intervalo se llaman FInicial y Ffinal. Escribo unas fechas y se abre el informe en ese intervalo.

En el caso del formulario le tengo puesto en el evento Después de actualizar del cuadro de texto FFinal

Private Sub FFinal_AfterUpdate()
If Not IsNull([FInicial]) Then
DoCmd.OpenReport "Movimientos", acPreview, , "fechamov between #" & Me.FInicial & "# and #" & Me.FFinal & "#"
End If
End Sub

Y en el evento Al dar formato de la sección donde esté el cuadro de texto Saldo Final(texto15), que en el ejemplo está en el encabezado, le pongo

Private Sub EncabezadoDelInforme_Format(Cancel As Integer, FormatCount As Integer)
Texto15 = DLast("saldo", "movimientos", "fechamov between forms!movimientos!finicial and forms!movimientos!ffinal")
End Sub

Porque el formulario Movimientos está abierto ya que desde él, abro el informe.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas