Access - COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

 
Vista:
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por Luis (34 intervenciones) el 12/02/2019 02:03:35
hola espero me puedan ayudar tengo una base de datos donde los registro los tomo de una carpeta algunos registros son archivos Excel y otros son pdf quisiera compararlos para que no existan duplicados ejemplo
mis registros:

5015.1 Presupuesto de control de calidad en el fraccionamiento villas encantadas.xls
5015.1 Presupuesto de control de calidad en el fraccionamiento villas encantadas.pdf
5016 Presupuesto Topografía vista hermosa .xlsx

he tratado de utilizar esto pero no me da resultado


cadDirectorio = Right(directorios, InStr(1, directorios, ".") - 1)
strCadena1 = Right(T_CLI!NomArchivo, InStr(1, T_CLI!NomArchivo, ".") - 1)

strDirectorio = StrComp(Left(cadDirectorio, InStr(1, cadDirectorio, ".") - 1), Left(strCadena1, InStr(1, strCadena1, ".") - 1))
'''If strDirectorio = 0 Then
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
sin imagen de perfil
Val: 85
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por raul (36 intervenciones) el 12/02/2019 17:06:24
Sin más salsa, no se puede hacer PASTAS
Si lo que quieres es obterner los nombres sin la extencion te recomiendo esta función

1
2
3
4
5
Private function CADNAME(CAD as string) as string
dim ME_INT as integer                                                    'variable temporal integer
me_int = instr(cad, ".")                                                     'Aberiguar posición del "." dentro de la cadena
cdname = left(cad, len(cad) - me_int)                              'Recuperar toda la cadena sin la extención
end function


Ahora no se que mecanismo usas para recuperar los nombres de los ficheros, te recomiendo que guardes la información en una lista y crees alguna instancia de exclución.
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
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por Luis (34 intervenciones) el 13/02/2019 00:19:11
agradezco muchísimo tu apoyo, pero fíjate que en los registros que te envié
tu ejemplo que me envías toma el primer punto empezando del lado izquierdo

5015.1 Presupuesto de control de calidad en el fraccionamiento villas encantadas.xls
5015.1 Presupuesto de control de calidad en el fraccionamiento villas encantadas.pdf
5016 Presupuesto Topografía vista hermosa .xlsx


El mecanismo que utilizo es que desde un formulario escogo una carpeta de mi disco y extraigo todos los nombres de los ficheros que hay
, es por ello que estoy buscando excluir los repetidos como estos


5015.1 Presupuesto de control de calidad en el fraccionamiento villas encantadas.xls
5015.1 Presupuesto de control de calidad en el fraccionamiento villas encantadas.pdf
como podras darte cuenta no son iguales por la terminacion .xls o pdf
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
sin imagen de perfil
Val: 85
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por raul (36 intervenciones) el 13/02/2019 00:46:42
disculpa solo tienes que cambiar LEFT por RIGHT

bien agrega un form agrega una caja de texto un boton y una lista

1
2
3
4
5
6
7
Dim strArchivo As String
strArchivo = Dir("C:\*.*")
While strArchivo <> ""
Me.Lista1.AddItem strArchivo
strArchivo = Dir
Wend
End Sub

Luego agrega un mecanismo de filtrado al final, para eliminar los repetidos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por Anonimo (3312 intervenciones) el 13/02/2019 14:59:01
Si lo que se desea o necesita consiste en excluir las terminaciones :
5015.1 Presupuesto de control de calidad en el fraccionamiento villas encantadas.xls
5015.1 Presupuesto de control de calidad en el fraccionamiento villas encantadas.pdf

Probablemente pueda ser de utilidad la función Instr en su otra versión (InStrRev) que hace exactamente lo mismo pero comenzando al final de la cadena (permitiría localizar el primer punto que delata el tipo de archivo y asi excluir la terminación que los diferencia)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por Luis (34 intervenciones) el 15/02/2019 01:50:10
Agradezco muchísimo su apoyo y lo hice de la siguiente manera:

Set T_CLI = CurrentDb.OpenRecordset("Select * from TblArchivos where Left(T_CLI.NomArchivo, InStrRev(T_CLI.NomArchivo, "." ) - 1) = '" & cadDirectorio & "'")

y ahora me sale error de compilacion: se esperaba separador de lista o )


Por favor ayuda
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

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por Anonimo (3312 intervenciones) el 15/02/2019 08:44:21
Ese error suele causarlo la aparición de un dato fantasma (NULL), convendría verificar el otro termino de la igualdad ( cadDirectorio )
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
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por Luis (34 intervenciones) el 15/02/2019 16:59:48
gracias por tu comentario pero lo que me falto decirte es que cadDirectorio esta bien es una variante que tomo.
cadDirectorio = Left(directorios, InStrRev(directorios, ".") - 1)

volviendo a mi pregunta cuando corro el procedimiento y me sale el aviso de error de compilación: se esperaba separador de lista o ) me marca donde esta el "."

Set T_CLI = CurrentDb.OpenRecordset("Select * from TblArchivos where Left(T_CLI.NomArchivo, InStrRev(T_CLI.NomArchivo, "." ) - 1) = '" & cadDirectorio & "'")
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
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por Norberto (753 intervenciones) el 15/02/2019 12:04:13
Hola:

La función InStr() devuelve la posición del primer punto. Si el nombre del archivo contiene un punto antes del separador de la extensión, la hemos liado. Prueba a usar InStrRev() que comenza a buscar desde el final.

strDirectorio = StrComp(Left(cadDirectorio, InStrRev(cadDirectorio, ".") -1), Left(strCadena1, InStrRev(strCadena1, ".") -1), vbTextCompare)

Un saludo,

Norberto.

P.S. Utilizo el parámetro vbTextCompare ya que si no, por defecto, hace una comparación binaria. En este caso sería sensitivo a mayúsculas y minúsculas.

Captura
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
sin imagen de perfil
Val: 42
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por Luis (34 intervenciones) el 15/02/2019 17:11:18
gracias Norberto por tu ayuda como podrás ver ahora me resulto esto

cadDirectorio esta bien es una variante que tomo.
cadDirectorio = Left(directorios, InStrRev(directorios, ".") - 1)

volviendo a mi pregunta cuando corro el procedimiento y me sale el aviso de error de compilación: se esperaba separador de lista o ) me marca donde esta el "."

Set T_CLI = CurrentDb.OpenRecordset("Select * from TblArchivos where Left(T_CLI.NomArchivo, InStrRev(T_CLI.NomArchivo, "." ) - 1) = '" & cadDirectorio & "'")
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

COMPARAR DOS CADENAS SIN LOS ULTIMOS REGISTROS DESPUES DEL PUNTO

Publicado por Anonimo (3312 intervenciones) el 16/02/2019 20:11:26
No tenia intención de volver a intervenir, pero como veo que no se obtiene una respuesta a ese problema y lo de señalar el punto como error me pareció curioso, te ofrezco una respuesta que espero sea la solución.

Ese punto lo señala, porque al evaluar la expresión (que comienza con una doble comilla), se interrumpe al llegar a la doble comilla que antecede al punto en cuestión.

La causa: utilizar dobles comillas en una expresión delimitada por dobles comillas
La solución: sustituir las dobles comillas por comillas simples (las dobles comillas que hay dentro de la función InStrRev)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar