Campo con incrementos correlativos en formularios

Ya sé que pido cosas sin mucho sentido, pero como soy un chapuzas autodidacta seguro que hay cosas mucho más fáciles de usar, pero buen, vamos a ello: Necesito que en un formulario en vista tabular (registros continuos) aparezca un control en el que aparezca el número de orden de la línea ( 1,2,3...), pero no quiero guardarlo en ninguna tabla, tan solo como si fuese un campo calculado, y que cuando vuelva a abrirlo, y ya hayan cambiado los datos me vuelva a poner el número de fila, sin importar cuantas haya.
La intención es que con un campo cuenta, al restar uno a otro en la ultima línea dará 0, valor que emplearé para decirle a una macro que pare de realizar su función ( enrevesado, ¿no?
Gracias por leerme, y si respondéis ya es el colmo.

1 respuesta

Respuesta
1
Enrevesado, si... :)
Vamos por partes, colocar un campo donde te indique el número de linea, complicado sin VBA. Lo mejor que tienes es =[CurrentRecord] pero no te vale porque te indica solo el numero de linea del registro activo...
Si supiera para que necesitas exactamente esto te podríamos ayudar mejor.
Uso macros en formularios con subformularios anidados, de tal modo que relleno un campo en el formulario y la macro me recorre todos los campos del subformulario pegando el dato que puse en el formulario, sin tener que activar una consulta de actualización con filtros más o menos complicados, que tendría que elaborar cada vez, mientras que el filtrado ya lo tengo hecho en la relación entre el formulario y el subformulario. Por ejemplo por fechas o por origen y fecha a la vez, etc.
He de decir que lo he conseguido a base de no sé cuantas macros y campos calculados adicionales, pero realmente es un jaleo gordo el que he montado, y la base de datos crece en peso considerablemente.
Lo que hago es un campo que cuenta el total, en otros hago que se recorran añadiendo valores según van avanzando los registros( con adición de uno en uno ), y en otro campo tengo la diferencia entre contador y el autoincremental que me he inventado. La macro la hago parar cuando dicha diferencia es 0, ya que si salta al siguiente campo me dice que no puede haber un registro con campo clave nulo ( como por otra parte ya sabemos ).
No sé si os habré liado más.
Es solamente por si hay manera más sencilla
Gracias por atenderme
Si lo entiendo bien, lo que haces es rellenar un dato en un formulario y al subformulario le cambias un valor a todos los registros.
Siento comentarte que con una sql es más fácil y efectiva.
Te mando un ejemplo.
La consulta quedaría algo así:
Private Sub campoa_AfterUpdate()
Dim vacio As Integer
vacio = IsNull(Me.campoa) '* Miramos que no sea nulo
If vacio = 0 Then
Dim SQL As String
    SQL = "UPDATE T2 " & _
          "SET T2.campoa = '" & Me.campoa & "' " & _
          "WHERE T2.T1_ID = " & Me.IDA
    DoCmd.RunSQL SQL
    Me.Subformulario_T2.Requery
End If
End Sub
En unas lineas de código tienes todo. Ademas esto es muy rapido, ya que es sql y no te dará problemas, las macros a la larga...
Link del ejemplo:
http://brmotorsport.es/mdb/SQL para datos subformulario.mdb
He hecho un agujero en la pared a cabezazos, aunque lo que si que me queda es que conseguí contar ovejas contando las patas y luego dividiendo por cuatro. Muchas gracias, aunque no será lo último que pregunte.
Bueno, de momento solo he probado el ejemplo que me has mandado, pero voy a ver si funciona en mi monstruosa base de datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas