Access2003 ayuda mostrar repeticiones de un campo

Buenas, tengo una tabla con mas de 30000 registros llamada repetidors...
esta tabla tiene un campo numérico (teléfono), otros campos de texto que dan información sobre ese campo numérico (datos del cliente) y un campo autonumérico.
necesitaría saber las "coincidencias" de registros que tienen el mismo campo numérico (teléfono) pero los otros campos (sin tener en cuenta el autonumérico) sean diferentes, es decir, que solo me muestre si en la tabla hay el mismo valor para el campo numérico (teléfono) con diferentes clientes...
he probado de hacer una consulta de coincidentes (el mismo campo numérico) con totales contando el campo y que tengan valor >1 del contador.
después he hecho un formulario basado en esta consulta de coincidentes con un subformulario basado en la tabla inicial vinculando el campo numerico (teléfono)...
me da todas las coincidencias pero no me discrimina cuando los otros campos son diferentes (que es la base de mi pregunta).. Muchas gracias otra vez! Saludos a todos/as
Marc

1 Respuesta

Respuesta
1
Te he solicitado información adicional.
Ya me dirás.
Te explico el procedimiento en general. Tu trabajillo será adaptarlo a la BD. Lo que tienes que hacer es:
1.- A un botón de comando, en el formulario que quieras o a uno nuevo, le aplicas, al evento "Al hacer click", el código que te indico más abajo.
2.- Este código te crea una tabla, que he llamado TDuplicados, con un solo campo. Los valores que se recogen en esa tabla son los números de teléfono que son utilizados por varios clientes distintos
3.- A partir de dicha TDuplicados tú puedes armarte las consultas que necesites, y sobre ellas los formularios que necesites, para extraer la información.
En definitiva, mi "aportación" ha sido sólo crearte el código para que examine y extraiga los números que cumplan la condición que pedías; es decir, el mismo número utilizado por diferentes clientes. El resto del proceso creo que serás capaz de hacerlo tú mismo.
Piensa que cada vez que le des al botón la tabla TDuplicados se borra y se crea una de nueva, lo que significa que los datos volverán a estar totalmente actualizados.
Finalmente, el código trabaja sobre la tabla <repes>, por lo que evidentemente esta tabla ya deberá contener la información de los números duplicados o repetidos.
El código que te comentaba es el siguiente:
...
Private Sub cmdDuplicatsDifClient_Click()
'Comprobamos si la tabla TDuplicados existe. Si existe la borramos
Dim tbl As Object
For Each tbl In CurrentData.AllTables
If tbl.Name = "TDuplicados" Then
DoCmd.DeleteObject acTable, tbl.Name
Exit For
End If
Next
'Creamos la SQL que creará la tabla TDuplicados
Dim miSqlDupl As String
miSqlDupl = "CREATE TABLE TDuplicados ([NumDupl] String)"
'Ejecutamos la SQL para crear la tabla TDuplicados
DoCmd.RunSQL (miSqlDupl)
'Creamos la SQL que recogerá los números únicos de la tabla repeticiones. La usaremos
'después para hacer las comparaciones con el recordset de esta misma tabla
Dim miSqlNum As String
miSqlNum = "SELECT repes.numero FROM repeticiones GROUP BY repes.numero"
'Creamos el recordset de la tabla TDuplicados
Dim dbs As DAO.Database
Dim rstDupl As DAO.Recordset
Set dbs = CurrentDb
Set rstDupl = dbs.OpenRecordset("TDuplicados")
'Creamos el recordset de la SQL miSqlNum
Dim rstNum As DAO.Recordset
Set rstNum = dbs.OpenRecordset(miSqlNum)
'Si no devuelve ningún registro lanza un mensaje y salta a Salida
If rstNum.RecordCount = 0 Then
MsgBox "No existen números a comparar", vbExclamation, "AVÍS"
GoTo Salida
End If
'Nos movemos al primer registro
rstNum.MoveFirst
'Iniciamos el proceso de comparación / comprobación
Do Until rstNum.EOF
'Cogemos el número de teléfono
Dim vNum As String
vNum = rstNum.Fields(0).Value
'Creamos la sql que filtrará los datos de la tabla repeticiones.
'Creamos también su recordset
Dim vCli As String
Dim miSqlRepes As String
Dim rstRepes As DAO.Recordset
miSqlRepes = "SELECT repes.client FROM repeticiones WHERE repes.NUMERO='" & vNum & "'"
Set rstRepes = dbs.OpenRecordset(miSqlRepes)
rstRepes.MoveFirst
vCli = rstRepes.Fields(0).Value
Do Until rstRepes.EOF
If vCli <> rstRepes.Fields(0).Value Then
With rstDupl
.AddNew
.Fields(0).Value = vNum
.Update
End With
Exit Do
End If
rstRepes.MoveNext
Loop
rstNum.MoveNext
Loop
rstRepes.Close
Set rstRepes = Nothing
Salida:
rstDupl.Close
Set rstDupl = Nothing
rstNum.Close
Set rstNum = Nothing
dbs.Close
Set dbs = Nothing
End Sub
...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas