Access - Numeracion de campo. Urgente

 
Vista:

Numeracion de campo. Urgente

Publicado por Jose Antonio G. (1 intervención) el 07/10/2004 08:36:19
Tengo unas tablas "Pedidos" indexado por Nº de pedido; y "Detalle" indexado por nº de pedido, en esta segunda tabla hay varios registros con el mismo nº de pedido que se alimenta del nº de pedido de la tabla "Pedidos", el problema me surge al querer alimentar un campo "Nº de registro" de la tabla "Detalle" que comienze por 1, 2, 3, 4 por cada linea de detalle del pedido, hasta que haya una ruptura de Nº de Pedido, que tiene que comenzar de nuevo por 1.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Numeracion de campo. Urgente

Publicado por Alejandro (4142 intervenciones) el 12/05/2023 00:54:35
Para generar una numeración secuencial por cada línea de detalle del pedido en la tabla "Detalle" y reiniciarla cuando haya una ruptura en el número de pedido, puedes utilizar un código VBA en el evento apropiado (por ejemplo, en el evento "Después de insertar" o "Después de actualizar" de la tabla "Detalle"). Aquí tienes un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Private Sub Form_AfterInsert()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String
    Dim pedidoActual As Long
    Dim ultimoRegistro As Long
 
    Set db = CurrentDb()
    Set rs = Me.RecordsetClone
 
    ' Obtener el número de pedido actual
    pedidoActual = Me![Nº de pedido]
 
    ' Construir la consulta SQL para obtener el último registro del pedido actual
    strSQL = "SELECT MAX([Nº de registro]) AS UltimoRegistro FROM Detalle WHERE [Nº de pedido] = " & pedidoActual
 
    ' Ejecutar la consulta y obtener el último registro del pedido actual
    ultimoRegistro = Nz(DLookup("UltimoRegistro", strSQL), 0)
 
    ' Incrementar la numeración del último registro del pedido actual
    ultimoRegistro = ultimoRegistro + 1
 
    ' Asignar la numeración al nuevo registro
    Me![Nº de registro] = ultimoRegistro
 
    ' Actualizar el registro en la tabla "Detalle"
    Me.Update
 
    ' Actualizar la visualización en el formulario
    Me.Requery
 
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub

Asegúrate de adaptar el código a tu estructura de base de datos y a los nombres de tus tablas y campos. Este código asume que estás trabajando en un formulario y que tienes un control llamado "Nº de registro" en el formulario para mostrar la numeración.

Cuando insertes un nuevo registro en la tabla "Detalle" a través del formulario, el código se ejecutará y generará la numeración secuencial correcta para ese pedido. Si hay una ruptura en el número de pedido, la numeración se reiniciará desde 1 para el nuevo pedido.

Recuerda guardar el código en el evento adecuado y probarlo con tus datos para asegurarte de que funcione correctamente en tu caso específico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar