Page 1 of 1

Problema con campos con apostrofes (SOLUCIONADO)

Posted: Thu Jan 19, 2017 9:40 pm
by Armando
Saludos foreros:

Tengo una aplicación que pasa registros desde un archivo/fichero .TXT con campos
separados por coma (,) a una tabla MySql, algunos registros tienen el campo llamado
descripción cuyo contenido tiene un apostrofe, por ejemplo "Augusto O'Farril",
pues bien este contenido hace abortar la aplicación indicando que hay un error.

Pareciera que el apostrofo hace las veces de delimitador.

Alguien tiene idea de cual es la solución?

Saludos

Re: Problema con campos con apostrofes

Posted: Fri Jan 20, 2017 1:08 pm
by xmanuel
Usa la funcion MYSQL_ESCAPE_STRING asi:

valorParaEscribirEnFichero = MYSQL_ESCAPE_STRING( ValorDelCampoDeMySQL )

Re: Problema con campos con apostrofes

Posted: Sat Jan 21, 2017 2:03 am
by Armando
xManuel:

Gracias por tu apoyo, pero no funca, me reclama que no existe la función,
este es el código:

Code: Select all

            cCmdSql := "UPDATE " +;
                                "estilos " +;
                            "SET " +;
                                "est_cor = '" + aFields[06] + "'," +;
                                "est_des = MYSQL_REAL_ESCAPE_STRING(" + "'" + aFields[05] + "')" + "," +;
                                "est_cdb = '" + aFields[07] + "' " +;
                            "WHERE " +;
                                "est_mar = " + "'" + STR(VAL(aFields[03]),3,0) + "' " +;
                            "AND " +;
                                "est_est = " + "'" + aFields[04] + "'"
 
En principio leí que la función MYSQL_ESCAPE_STRING esta obsoleta (DEPRECATED) y sugieren
usar la MYSQL_REAL_ESCAPE_STRING.

Pero ninguna de las dos va bien.

Saludos

Re: Problema con campos con apostrofes

Posted: Sat Jan 21, 2017 2:30 am
by nnicanor
Hola,

Que estas usando para conectarte a mysql ?


Slds,

Re: Problema con campos con apostrofes

Posted: Sat Jan 21, 2017 2:35 am
by Armando
Nicanor:

ODBC

Saludos

Re: Problema con campos con apostrofes

Posted: Sat Jan 21, 2017 12:01 pm
by armando.lagunas
Armando:

tuve el mismo problema hace un tiempo ya que el apostrofe " ' " lo considera como termino de una cadena de caracteres y da un error, (por si te sirve), usa STRTRAN para cambiar el apostrofe, por otro caracter, yo lo utilizo asi:

Code: Select all


//--- para guardarlo en el campo de una base de _ := strtran( cApellido, chr(39) , chr(96) )

//--- para devolverlo a su estado original
  
        cApellido := strtran( cApellido, chr(96), chr(39) )

 


el chr(39) es el apostrofe y el chr(96) es como el acento al revés

Image


Saludos

Re: Problema con campos con apostrofes

Posted: Sat Jan 21, 2017 3:29 pm
by Armando
Tocayo:

Gracias por tu interés, así lo estoy haciendo, aunque se parecen, no es lo mismo
y el cliente es muy quisquilloso.

Veremos si hay alguna otra alternativa.

Saludos

Re: Problema con campos con apostrofes

Posted: Sat Jan 21, 2017 6:29 pm
by xmanuel
Armando Lagunas...
Si hay otro programa en oto lenguaje el dato no lo recuperará correctamente.
En cambio si lo escribes transformando esto
"Augusto O'Farril"
por esto otro
"Augusto O\'Farril"
No dará ningún error y será compatible con cualquier otro lenguaje que recupere el dato.

Aunque sé que MYSQL_ESCAPE_STRING esta obsoleta (DEPRECATED) te la he puesto porque solo hay que pasarle la cadena que quieres parchear en cambio MYSQL_REAL_ESCAPE_STRING necesita un parametro mas que es el manejador de la conexión.

Re: Problema con campos con apostrofes

Posted: Sat Jan 21, 2017 7:21 pm
by Armando
xManuel:

En _, MYSQL_ESCAPE_STRING y MYSQL_REAL_ESCAPE_STRING me tira
el error de que no existe la función, me falta algo?

Saludos

Re: Problema con campos con apostrofes

Posted: Sun Jan 22, 2017 11:22 pm
by nageswaragunupudi
I do not know what is your source of MYSQL_REAL_ESCAPE_STRING() and MYSQL_ESCAPE_STRING().

To use MYSQL_REAL_ESCAPE_STRING(), you need to open connection to Server using libmysql.lib/dll and provide this connection as a parameter. If you are using ODBC, you can not use this function. MYSQL_ESCAPE_STRING() works well.

Recent versions of FWH provides this function, MYSQL_ESCAPE_STRING( <cValue> )

I see error in your sql statement. Please try this:

Code: Select all

cCmdSql := "UPDATE estilos " +;
           "SET " +;
              "est_cor = '" + MYSQL_ESCAPE_STRING( aFields[06] ) + "'," +;
              "est_des = '" + MYSQL_ESCAPE_STRING( aFields[05] ) + "'," +;
              "est_cdb = '" + MYSQL_ESCAPE_STRING( aFields[07] ) + "' " +;
           "WHERE " +;
               "est_mar = " + "'" + STR(VAL(aFields[03]),3,0) + "' " +;
           "AND " +;
               "est_est = " + "'" + aFields[04] + "'"
 
In case you do not have correct version of MYSQL_ESCAPE_STRING, you can also use
StrTran( cValue, "'", "\'" )

Please let us know if you still have problem.

Re: Problema con campos con apostrofes

Posted: Sun Jan 22, 2017 11:34 pm
by Armando
Mr. Rao:

With the next code

Code: Select all

"est_des = '" + MYSQL_ESCAPE_STRING( aFields[05] ) + "'," +;
 
I get the "Unresolved function error message"

The solution was the

Code: Select all

StrTran( cValue, "'", "\'" )
 
code.

Thanks for your appreciated help.

Regards

Re: Problema con campos con apostrofes (SOLUCIONADO)

Posted: Sun Jan 22, 2017 11:41 pm
by nageswaragunupudi
May I know your FWH Version?

Re: Problema con campos con apostrofes (SOLUCIONADO)

Posted: Mon Jan 23, 2017 12:03 am
by nageswaragunupudi
You can also try

Code: Select all

cCmdSql := "UPDATE estilos " +;
           "SET " +;
              "est_cor = " + FW_ValToSQL( aFields[06] ) + "," +;
              "est_des = " + FW_ValToSQL( aFields[05] ) + "," +;
              "est_cdb = " + FW_ValToSQL( aFields[07] )       + ;
           "WHERE " +;
 

Re: Problema con campos con apostrofes (SOLUCIONADO)

Posted: Mon Jan 23, 2017 4:35 pm
by Armando
Mr. Rao:

Yes, of course, FWH0810 and xHarbour

Regards