Como programar valores únicos en VBA en una consulta de Access

Estoy limpiando un archivo que importo de excel, por lo que tengo la necesidad de filtrar la información y dejar solo valores únicos en mi consulta, todo esto por medio de código.

Tengo el siguiente código

Creo este código se puede simplificar mucho, pero por el momento así es como se me viene a la cabeza la idea.

miSQL = "SELECT * FROM TempFile WHERE (TempFile.[APPROVE STATUS]='A') AND (TempFile.[ORGANIZATION CODE] like 'EDO')"
Set qry = db.CreateQueryDef("LimpiaEDO", miSQL)
CurrentDb.Execute ("INSERT INTO TempFileFull SELECT * FROM LimpiaEDO")

Primero creo mi consulta y despues muevo la informacion de mi consulta a mi tabla.

El problema que tengo es que en este punto y con este código, me duplica valores. Para hacer una prueba en modo diseño de la consulta LimpiaEDO, en la parte de propiedades puse "SI" en la opción Valores únicos, y mi información ahora si es correcta.

Existe alguna manera de definir valores únicos en el código.

2 Respuestas

Respuesta
1

En Excel: Datos: Herramientas de datos: Quitar duplicados

Respuesta
2

La instrucción Select Distinct equivale a valores únicos

El predicado DISTINCTROW corresponde al valor de la propiedad RegistrosÚnicos.

Por ejemplo, si tengo la tabla

Y construyo el SQL de la consulta como

Cuando la abro

¡Gracias!

Muchas Gracias, tengo que limpiar una archivo con más de 30 columnas donde se repiten horizontalmente los registros, disculpa las preguntas tan básicas, pero mucho me haz ayudado.

Saludos

¡Gracias! 

Julián,

No se si tengo que abrir otro hilo, pero una pegunta, buscando tener valor unnicos, estoy creando una clave primaria, la cual la obtendría tras concatenar aprox 17 columnas, el problema que tengo es que si pongo "lomg text" igual le hace falta algunos caracteres, como si no fuera suficiente el campo "long text".

¿Qué me recomendarías hacer?

Si pudieras poner una imagen sería mejor para entender el problema, pero no debes tener problemas. Si de cada campo coges, por ejemplo 15 dígitos para "concatenar" con los otros, un campo Texto corto te admite hasta 255 dígitos, que casualmente es 15 x 17, por lo que podrías usarlo. Un campo Texto largo te admite hasta, aproximadamente, 2 Gygas. Es decir, que casi podrías poner la biblioteca del congreso en un único registro de un campo.

Gracias, Checando la base veo que en efecto tengo más de 255 caracteres, mi máximo por el momento son 350, mi error era que copiaba eso para validar en excel si existían duplicados y la celda solo me ponía 255 caracteres.

Creo es algo ilógico y no se que tanto afecte la velocidad de la base el agarrar un campo tan grande como clave primaria, tendé que buscar opciones.

Muchas gracias

Pero si el campo clave lo pones como texto largo, no debes tener problemas por poner en cada registro 350 dígitos. Aunque la verdad, para ser un campo clave me parece algo largo. Si es para que no se repitan valores puedes quitarle la clave y dejarlo como Indexado Si sin duplicados.

Muchas gracias,

Al poner esta propiedad, me dice que no se puede pues tengo registros duplicados, a lo que no debería de ser, ya que si exporto esa tabla a Excel y pongo un formato condicional para que me resalte los duplicados, no me muestra nada duplicado. me gustaría mostrarte aquí la tabla pero tengo aprox 9 mil registros.

Gracias

Lógicamente, si ya tienes valores no te va a dejar poner el campo ClaveComp2 como clave. Lo que puedes hacer es:

Si tengo la tabla Tabla1(no pretenderás que escriba 350 dígitos en el campo ClaveComp2, soy muy vago)

Puedes ver que el 4 está repetido. Creo otra tabla Tabla2 vacía pero pongo el campo ClaveComp2 como clave

Con la tabla1 creo una consulta de datos anexados a la tabla2

Cuando la ejecuto me aparecerá

Donde me dice que hay un registro que no puede anexar debido a que entonces el campo clave estaría repetido(lógico). Le digo que sí y la tabla2 me queda como

Es decir me ha eliminado los registros con el campo ClaveComp2 excepto el primero que si lo ha "pasado" y ahora no se repite ninguno.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas