Necesito contar progresivamente los registros en formularios continuos o en cuadros de lista (No por medio del autonumérico)

Necesito que en un formulario continuo o en un cuadro de lista se enumeren progresivamente los registros (como en los informes donde me enseñaron a hacerlo con un campo independiente =1 y despues le coloco sobre grupo o suma continua y hace lo que pretendo)

Pero en esta oportunidad necesitaria algo simple (como una expresión en un cuadro independiente) aplicable a formularios o cuadros de lista. Alguna vez vi algo con la funcion máx(xxx)+1 pero no logro nada.

2 respuestas

Respuesta
2

Noa: En el SubFormulario añades un cuadro (cuadrito) de Texte, con cualquier nombre >> Ejemplo NumLin

En el Módulo VBA del Formulario, o en uno Standard, copias éste código:

Public Function CuentaLineas(Frm As Form) As Long
Dim LngLinea As String
Dim NumeroRegistro As Long
On Error GoTo CuentaLineas_Err
With Frm.RecordsetClone
        .Bookmark = Frm.Bookmark
        CuentaLineas = 1 + .AbsolutePosition
End With
Exit Function
CuentaLineas_Err:
If Err = 3021 Then 'No hay registro activo
     LngLinea = 0
End If
End Function

Para que te funcione, en el Origen de Control del TextBox citado arriba >> NumLin le pones

=CuentaLineas([Formularios]![FormPrincipal]![SubForm].[Formulario])

Esto suponiendo que tienes la estructura de Formulario+Subformulario Continuo.

Si el Formulario Continuo no hace de Subformulario, sino que él mismo es el Principal>>

=CuentaLineas([Formularios]![FormContinuo].[Formulario])

Lo que va en Negrita cursiva, lo has de sustituir por los Nombres que tu tengas.

Mis saludos >> Jacinto

Respuesta
2

Si el formulario ya tiene registros, sea continuo o no, en la tabla origen del formulario añádele un campo, por ejemplo, Orden(numérico). En el formulario añade ese campo y crea, por ejemplo, en el encabezado del formulario un botón de comando y en e evento Al hacer clic, crea un procedimiento de evento y entre Prive Sub y End Sub esribe

DoCmd. GoToRecord,, acFirst
For i = 1 To Form.Recordset.RecordCount
orden = i
DoCmd.GoToRecord , , acNext
Next
DoCmd. GoToRecord,, acFirst

Así, cuando pulses el botón, se irá al primer registro( sea o no continuo), a Orden l pondrá 1, luego se irá al siguiente y le pondrá 2, etc... y al final volverá al primer registro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas