Mensaje #Error en consulta de Access

Con la expresión en consulta consigo separar el nombre.

Expr1: Der([ama];Longitud([ama])-EnCad([ama];",")-1)

ejemplo : Newlads Urbe, Jenni An = Jenni An

Si el campo "ama" está vacío me da como resultado #Error. ¿A la hora de crear el informe con dicha consulta es posible que no aparezca #Error?

3 Respuestas

Respuesta
1

Algo más completo con una función que permita extraer cualquier posición de una cadena. Observe este ejemplo.

TABLA

Voy a extraer el nombre que está a la derecha después de la coma (,).

CONSULTA

Observe que el CustomeID=2 No tenía el apellido pero aparece el nombre Faith.

DISEÑO DE LA CONSULTA

Si el separador fuera guion (-) la función se llamaría así:

Apellido:extrae([CustomerMain];2,"-")

FUNCION EXTRAE()

Public Function extrae(pvstring As Variant, pipart As Integer, Optional psDeli As String = ",")
 'Functión para extraer parte de una cadena
 'Parámetros:
 '           pvstring=Cadena de texto a minipular
 '           pipart=Parte de cadena a extraer de acuerdo con el separador,
 '                  por ejemplo,1 primera parte, 2 segunda parte
 '           psdeli=Separador, opcional por defecto coma (,) pero pueder otro como guion(-)
 'Elaborada por: Eduardo Pérez Fernández
 'Fecha: 06/09/2021
'Ejemplos de llamada:
'? Extrae("Eduardo, Pérez", 1,",") ------>> retorna Pérez elimina el espacio que hay antes de Pérez
'? Extrae(", Pérez", 2,",") ------>> retorna Pérez elimina el espacio que hay antes de Pérez
'? Extrae("Eduardo-Pérez", 2,"-") ------>> retorna Pérez. Observe que cambie el separador de cadena por -
'? Extrae("Eduardo, Pérez", 2) ------>> retorna Pérez. No inclui el separador toma el separador por defecto,
'? Extrae("Eduardo, Pérez, Fernández", 3) ----->> retorna el segundo apellido Fernández
 On Error Resume Next
  extrae = Null
  If Mid(pvstring, 1, 1) = psDeli Then
    pvstring = "nd" & pvstring
  End If
 If IsNull(pvstring) Then Exit Function
 extrae = Trim(Split(pvstring, psDeli)(pipart - 1))
End Function

Copie esta función en un módulo y la tendrá disponible desde cualquier parte.

¡Gracias! 

Muchísimas gracias. Un saludo

Me alegro le haya servido

Respuesta
1

Pruebe con:

SiInm(EnCad([ama];",")<>0; Der([ama];Longitud([ama])-EnCad([ama];",")-1); [ama])

Respuesta
1

Te digo como lo haría, pero suponiendo que la primera coma está siempre "en su sitio". Construyo la consulta como

Con lo cual, cuando abro la consulta

Como puedes ver, en el primero me muestra el nombre de la derecha de la coma, y en caso de que en un registro no haya nombre de cliente, en el campo parte no me muestra lo de #Error

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas