Access - Como puedo solucionar el error 3075 al introducir comilla simple en cuadro de texto

 
Vista:

Como puedo solucionar el error 3075 al introducir comilla simple en cuadro de texto

Publicado por TrujelloCm (6 intervenciones) el 04/03/2018 21:49:53
Hola, estoy realizando una base de datos en Access y estoy atascado y no sé por dónde tirar, tengo dos preguntas a ver si me pueden ayudar.
De antemano, gracias por vuestra labor.
PRIMERA PREGUNTA:
Tengo una tabla (tblPaises) en la cual inserto los datos con un formulario de entrada de datos NO vinculado a la tabla (Formulario exclusivamente de entrada de datos).
El formulario tiene dos campos de texto, uno es “txtEntradaNomPais” y el otro es “txtEntradaObservacionesPais”.
Tengo un botón guardar con el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub btnGuardarEntrada_Click()
'Comprobamos si en la tabla existe el nombre del país
ComparaNom = DLookup("[NomPais]", "[tblPaises]", "[NomPais]='" & Me.txtEntradaNomPais & "'")
If ComparaNom = txtEntradaNomPais Then
    MsgBox "El nombre del País (" & UCase(txtEntradaNomPais) & ") Está duplicado.", vbInformation, "Valor duplicado"
        Me.txtEntradaNomPais.SetFocus
        Me.txtEntradaNomPais.SelStart = 0
        Me.txtEntradaNomPais.SelLength = Len(Me.txtEntradaNomPais.Text)
Else
        'Guardamos los datos
        DoCmd.RunSQL "INSERT INTO tblPaises ( [NomPais], [ObservacionesPais] )SELECT FORMS!frmEntradaPaises!txtEntradaNomPais, FORMS!frmEntradaPaises!txtEntradaObservacionesPais FROM registro;", -1
        Me.txtEntradaNomPais.SetFocus
        Me.txtEntradaNomPais = Null
        Me.txtEntradaObservacionesPais = Null
End If
End Sub

Con el cual compruebo que el nombre del país introducido en el cuadro de texto (txtEntradaNomPais) no existe en el campo (NomPais) de la tabla. Todo funciona bien hasta que por error o intencionadamente se introduce una comilla simple ( ‘ ) en el cuadro de texto, provocando el error 3075 en tiempo de ejecución.
He probado a cambiar esto:

1
ComparaNom = DLookup("[NomPais]", "[tblPaises]", "[NomPais]='& Chr(34) & Me.txtEntradaNomPais & Chr(34)'")

Y no me lanza el error de la comilla pero tampoco hace la comparación en la tabla.
También he probado a usar este otro código

1
ComparaNom = DLookup("[NomPais]", "[tblPaises]", "[NomPais]=""" & Me.txtEntradaNomPais & """")

Son todo comillas dobles y funciona bien pero ahora el error lo muestra al poner comillas dobles en el cuadro de texto.
No se si hay que hacer algo mas que se me escapa, Gracias.

SEGUNDA PREGUNTA:
En este mismo botón, me gustaría hacer la comprobación de si existe el país introducido independientemente esté acentuado o no. Es decir, si yo en el cuadro de texto txtEntradaNomPais introduzco Haití con acento, al pulsar el botón Guardar, me compruebe si existe Haití con acento y Haiti sin acentos.
He estado buscando en google y no consigo ver lo que busco
Gracias de nuevo
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

Como puedo solucionar el error 3075 al introducir comilla simple en cuadro de texto

Publicado por Anonimo (3316 intervenciones) el 05/03/2018 13:26:43
Esta sintaxis no es del todo correcta:

ComparaNom = DLookup("[NomPais]", "[tblPaises]", "[NomPais]='& Chr(34) & Me.txtEntradaNomPais & Chr(34)'")

Lo primero es que la función CHR dentro de las dobles comillas será interpretado de forma LITERAL
Lo segundo es que si se utiliza (como marcador de texto) la función CHR, sobra como indicador la comilla simple

Lo idóneo seria así:
1
ComparaNom = DLookup("[NomPais]", "[tblPaises]", "[NomPais]= " & Chr(34) & Me.txtEntradaNomPais & Chr(34))
Para entender las diferencias .....

Access necesita el mismo MARCADOR como inicio y final del texto y ese marcador puede ser:
- la doble comilla
- la comilla simple
- la definición de la doble comilla (el CHR(34))

La condición es que NO se puede utilizar el mismo marcador (para funciones diferentes) en la misma expresión
- en esa (supuesta) expresión se necesita utilizar la comilla simple, lo cual la descarta como marcador
- la comilla doble la utiliza como delimitador del conjunto (también queda invalidada)
- solo nos queda para utilizar el 'tercer posible marcador' que seria la función CHR con el valor de la doble comilla (34) y que aun siendo equivalentes las considera diferentes.
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

Como puedo solucionar el error 3075 al introducir comilla simple en cuadro de texto

Publicado por TrujelloCm (6 intervenciones) el 05/03/2018 16:29:54
Gracias por tu respuesta pero lamento decirte que obtengo el mismo resultado poniendo
1
ComparaNom = DLookup("[NomPais]", "[tblPaises]", "[NomPais]=""" & Me.txtEntradaNomPais & """")

(Abro con tres comillas dobles y cierro con cuatro comillas dobles)
Es decir, me lanza el error 3075 pero ahora ocurre al introducir comillas dobles en el cuadro de texto.
Con respecto a la segunda pregunta, no sé si puedes ayudarme.
Gracias de todos modos
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

Como puedo solucionar el error 3075 al introducir comilla simple en cuadro de texto

Publicado por Anonimo (3316 intervenciones) el 05/03/2018 18:22:43
Es otra forma de hacerlo (y no es mas que la aplicación de la ayuda de Access, tal como duplicar la comilla simple para que 'se vuelva visible' cuando la ignora).

Por cierto, son TRES ñas dobles comillas en ambos casos, la supuesta cuarta es la pareja de la inicial de esa expresión (con una se abre, con otra se cierra).

Al respecto de la segunda cuestión ... no es una buena practica plantear mas de una pregunta (conceptualmente diferente) en el mismo hilo, se pierde la parte mas interesante del foro .... localizar mensajes en base al titulo de los mismos.
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

Como puedo solucionar el error 3075 al introducir comilla simple en cuadro de texto

Publicado por TrujelloCm (6 intervenciones) el 05/03/2018 20:40:47
Disculpa por hacer dos preguntas diferentes en el mismo hilo, no lo sabía.
Con respecto a la primera pregunta, no me funciona, con:
1
ComparaNom = DLookup("[NomPais]", "[tblPaises]", "[NomPais]=""" & Me.txtEntradaNomPais & """)
(devuelve error de sintaxis al introducir texto en el cuadro de texto y pulsar el boton guardar. Ni siquiera hace la comparación).

Ni con
1
ComparaNom = DLookup("[NomPais]", "[tblPaises]", "[NomPais]=" & Chr(34) & Me.txtEntradaNomPais & Chr(34))
(hace correctamente la comparación pero produce el error 3075 si se introduce (") comilla doble en el cuadro de texto y pulsar el boton guardar)

Ni con
1
ComparaNom = DLookup("[NomPais]", "[tblPaises]", "[NomPais]=""" & Me.txtEntradaNomPais & """")
(hace correctamente la comparación pero produce el error 3075 si se introduce (") comilla doble en el cuadro de textoy pulsar el boton guardar)

y de esta forma, como ya indiqué antes
1
ComparaNom = DLookup("[NomPais]", "[tblPaises]", "[NomPais]='" & Me.txtEntradaNomPais & "'")
(hace correctamente la comparación pero produce el error 3075 si se introduce (') comilla simple en el cuadro de textoy pulsar el boton guardar).

No se si habrá una forma distinta de hacerlo o escribo mal el código en alguna parte, pero de ninguna forma funciona. En todas produce el error al introducir comilla doble o bién, comilla simple.
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

Como puedo solucionar el error 3075 al introducir comilla simple en cuadro de texto

Publicado por Anonimo (3316 intervenciones) el 06/03/2018 00:21:49
La solución que propuse era para evitar el error que generaba la comilla simple como parte de ese texto, si ahora se pretende permitírselo también a la doble comilla y cualquiera otro de los posibles caracteres reservados .... se tendrá que cambiar de estrategia en base a un concepto que debe de quedar muy claro:

Lo definido NO puede formar parte de la definición y el conjunto de la expresión lo definen las dobles comillas (unas al inicio, otras al final ....)
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

Como puedo solucionar el error 3075 al introducir comilla simple en cuadro de texto

Publicado por TrujelloCm (6 intervenciones) el 06/03/2018 21:51:00
Ok, gracias por responder, buscare otra forma de solucionarlo
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