Crear clave para distinguir nombres semejantes
He construido una aplicación con Microsoft Access 97 que gestiona una base de datos muy amplia. Me encuentro un problema ya que las personas que trabajan con ella dan de alta clientes con nombres semejantes, pero diferentes:
1.- Rodriguez villa, maría monserrat y
Rodriguez de la villa, Montserrat
2.- Nimba lopez, mª anavela y
Nimba lopes, Ana
Para detectarlos he cargado los nombres de la base de datos en Microsoft Excel y he hecho una transformación del nombre para crear una clave, de modo que en los casos anteriores se identifican claves idénticas para cada una de las dos parejas. Respectivamente:
1.- Rodriguebila, Mon
2.- Nimbalope, Ana
Así se han detectado cientos de posibles duplicados (digo lo de posibles porque en algunos casos no lo son, ya que tengo, por ejemplo tres clientes con el nombre 'GARCÍA GARCÍA, CARMEN' distintos que se distinguen en el nombre por un sufijo final, (1), (2) y (3), que se añade cuando se identifican como distintos pero con nombre idéntico).
El problema surge cuando quiero incorporar esta fórmula al formulario de alta de clientes, ya que mediante macros de Access no lo logro, y mis conocimientos de Visual Basic para Access son limitados.
¿Podrías indicarme cómo construir una función de Visual Basic para Access que me permita crear esta clave con los datos de los nuevos clientes a dar de alta?.
Las fórmulas empleadas para realizar la conversión en Microsoft Excel, por celdas empleadas, son:
A1: "Nombre a transformar"
B1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(A1;"/";"");"(";"");")";"");"?";"");"¿";"");"-";"");"_";"");".";"")
C1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(MAYUSC(B1);"NP";"MP");"CR";"KR");"CL";"KL");"X";"S");"PH";"F");" Y ";" ");"Y";"I")
D1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(C1;" DEL";"");" DE LA";"");" DE LOS";"");" DE LAS";"");" D´";" ");" DE";"");"´";"");"MARIA";"Mª")
E1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(D1;"0";"");"1";"");"2";"");"3";"");"4";"");"5";"");"6";"");"7";"")
F1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(E1;"8";"");"9";"");"V";"B");"TX";"CH");"RR";"R");"LL";"L");"CC";"C");"SS";"S")
G1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(F1;"TT";"T");"Ñ";"N");"GE";"JE");"GI";"JI");"CA";"KA");"CO";"KO");"CU";"KU");"QU";"K")
H1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(G1;"CE";"ZE");"CI";"ZI");"SS";"S");"MN";"N");"W";"B");"Mª";"");"MM";"M");"SS";"S")
I1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(H1;"H";"");"Z ";" ");"Z,";",");"S,";",");"S ";" ");" ";"")
J1: =IZQUIERDA(I1;ENCONTRAR(",";I1)+3)
Obteniéndose así, en la celda J1, la clave que permite identificar los posibles duplicados.
Sospecho que si esta combinación de fórmulas es posible en Microsoft Excel, seguro que se podrá definir una función semejante en Visual Basic para Access.
Por supuesto que te quedaré eternamente agradecido.
1.- Rodriguez villa, maría monserrat y
Rodriguez de la villa, Montserrat
2.- Nimba lopez, mª anavela y
Nimba lopes, Ana
Para detectarlos he cargado los nombres de la base de datos en Microsoft Excel y he hecho una transformación del nombre para crear una clave, de modo que en los casos anteriores se identifican claves idénticas para cada una de las dos parejas. Respectivamente:
1.- Rodriguebila, Mon
2.- Nimbalope, Ana
Así se han detectado cientos de posibles duplicados (digo lo de posibles porque en algunos casos no lo son, ya que tengo, por ejemplo tres clientes con el nombre 'GARCÍA GARCÍA, CARMEN' distintos que se distinguen en el nombre por un sufijo final, (1), (2) y (3), que se añade cuando se identifican como distintos pero con nombre idéntico).
El problema surge cuando quiero incorporar esta fórmula al formulario de alta de clientes, ya que mediante macros de Access no lo logro, y mis conocimientos de Visual Basic para Access son limitados.
¿Podrías indicarme cómo construir una función de Visual Basic para Access que me permita crear esta clave con los datos de los nuevos clientes a dar de alta?.
Las fórmulas empleadas para realizar la conversión en Microsoft Excel, por celdas empleadas, son:
A1: "Nombre a transformar"
B1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(A1;"/";"");"(";"");")";"");"?";"");"¿";"");"-";"");"_";"");".";"")
C1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(MAYUSC(B1);"NP";"MP");"CR";"KR");"CL";"KL");"X";"S");"PH";"F");" Y ";" ");"Y";"I")
D1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(C1;" DEL";"");" DE LA";"");" DE LOS";"");" DE LAS";"");" D´";" ");" DE";"");"´";"");"MARIA";"Mª")
E1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(D1;"0";"");"1";"");"2";"");"3";"");"4";"");"5";"");"6";"");"7";"")
F1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(E1;"8";"");"9";"");"V";"B");"TX";"CH");"RR";"R");"LL";"L");"CC";"C");"SS";"S")
G1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(F1;"TT";"T");"Ñ";"N");"GE";"JE");"GI";"JI");"CA";"KA");"CO";"KO");"CU";"KU");"QU";"K")
H1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(G1;"CE";"ZE");"CI";"ZI");"SS";"S");"MN";"N");"W";"B");"Mª";"");"MM";"M");"SS";"S")
I1: =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(H1;"H";"");"Z ";" ");"Z,";",");"S,";",");"S ";" ");" ";"")
J1: =IZQUIERDA(I1;ENCONTRAR(",";I1)+3)
Obteniéndose así, en la celda J1, la clave que permite identificar los posibles duplicados.
Sospecho que si esta combinación de fórmulas es posible en Microsoft Excel, seguro que se podrá definir una función semejante en Visual Basic para Access.
Por supuesto que te quedaré eternamente agradecido.
1 respuesta
Respuesta de wolfverine
1