Access - Asunto de duplicados

 
Vista:

Asunto de duplicados

Publicado por Jonathan (85 intervenciones) el 09/05/2007 08:21:43
hola necesito saber alguna cosilla, en mi empresa tienen una lista de pedidos y estos pedidos tiene dos campos pedidos y codigo yo quiero que me haga una consulta donde pueda controlar los pedidos duplicados osea que cuando el programa me encuentre un pedido con lineas duplicadas al primer pedido le ponga 0 y a los siguientes pedidos con numero de pedidos iguales le ponga 1, 2 ... hasta que ya no hayan lineas duplicadas de ese pedido como puedo hacerlo... por favor necesito la respuesta lo mas rapido posible gracias de antemano.. un saludo
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

Identificar y controlar pedidos duplicados en una consulta

Publicado por Alejandro (4142 intervenciones) el 10/08/2023 00:07:24
Para identificar y controlar pedidos duplicados en una consulta en Access, puedes seguir estos pasos:

1. Crear una consulta de totales para contar líneas duplicadas:

Crea una consulta que cuente las líneas duplicadas para cada pedido. Supongamos que tienes una tabla llamada "Pedidos" con los campos "Pedido" y "Codigo". Aquí tienes un ejemplo de cómo podrías construir la consulta:

1
2
3
4
SELECT Pedido, COUNT(*) AS LineasDuplicadas
FROM Pedidos
GROUP BY Pedido
HAVING COUNT(*) > 1;

Esta consulta te dará una lista de pedidos que tienen líneas duplicadas y la cantidad de líneas duplicadas para cada pedido.

2. Actualización de los registros con valores de control:

Ahora, puedes usar esta consulta para actualizar los registros en la tabla "Pedidos" con valores de control. Puedes hacer esto utilizando código VBA en un módulo:

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
36
37
Sub ActualizarPedidosDuplicados()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String
    Dim intControl As Integer
 
    Set db = CurrentDb
    strSQL = "SELECT Pedido, LineasDuplicadas " & _
             "FROM (SELECT Pedido, COUNT(*) AS LineasDuplicadas " & _
             "      FROM Pedidos " & _
             "      GROUP BY Pedido " & _
             "      HAVING COUNT(*) > 1) AS Duplicados " & _
             "ORDER BY Pedido;"
    Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
 
    intControl = 0
 
    Do While Not rs.EOF
        If intControl = 0 Then
            intControl = 1
        Else
            intControl = intControl + 1
        End If
 
        strSQL = "UPDATE Pedidos " & _
                 "SET Control = " & intControl & " " & _
                 "WHERE Pedido = '" & rs!Pedido & "';"
        db.Execute strSQL
 
        rs.MoveNext
    Loop
 
    ' Cerrar el recordset y la base de datos
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub

En este ejemplo, se crea un campo llamado "Control" en la tabla "Pedidos" para almacenar el valor de control. La función `ActualizarPedidosDuplicados()` actualiza los registros con valores de control según la consulta de totales creada anteriormente.

3. Ejecución de la función de actualización:

Puedes ejecutar la función `ActualizarPedidosDuplicados()` desde la ventana de código VBA en Access o desde un formulario o informe, según sea necesario.

Recuerda ajustar los nombres de las tablas y campos según tu diseño específico. Con estos pasos, podrás identificar y controlar los pedidos duplicados en tu base de datos de manera efectiva.
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