Problema con campos con apostrofes (SOLUCIONADO)

Post Reply
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Problema con campos con apostrofes (SOLUCIONADO)

Post 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
Last edited by Armando on Sun Jan 22, 2017 11:34 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
xmanuel
Posts: 613
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

Re: Problema con campos con apostrofes

Post by xmanuel »

Usa la funcion MYSQL_ESCAPE_STRING asi:

valorParaEscribirEnFichero = MYSQL_ESCAPE_STRING( ValorDelCampoDeMySQL )
______________________________________________________________________________
Sevilla - Andalucía
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Problema con campos con apostrofes

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
nnicanor
Posts: 296
Joined: Fri Apr 23, 2010 4:30 am
Location: Colombia

Re: Problema con campos con apostrofes

Post by nnicanor »

Hola,

Que estas usando para conectarte a mysql ?


Slds,
Nicanor Martinez M.
Auditoria y Sistemas Ltda.
MicroExpress Ltda.
FW + FWH + XHARBOUR + HARBOUR + PELLES C + XDEVSTUDIO + XEDIT + BCC + VC_X86 + VCC_X64 + MINGW + R&R Reports + FastReport + Tdolphin + ADO + MYSQL + MARIADB + ORACLE
nnicanor@yahoo.com
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Problema con campos con apostrofes

Post by Armando »

Nicanor:

ODBC

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

Re: Problema con campos con apostrofes

Post 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
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Problema con campos con apostrofes

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
xmanuel
Posts: 613
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

Re: Problema con campos con apostrofes

Post 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.
______________________________________________________________________________
Sevilla - Andalucía
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Problema con campos con apostrofes

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Problema con campos con apostrofes

Post 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.
Regards

G. N. Rao.
Hyderabad, India
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Problema con campos con apostrofes

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Problema con campos con apostrofes (SOLUCIONADO)

Post by nageswaragunupudi »

May I know your FWH Version?
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Problema con campos con apostrofes (SOLUCIONADO)

Post 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 " +;
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Problema con campos con apostrofes (SOLUCIONADO)

Post by Armando »

Mr. Rao:

Yes, of course, FWH0810 and xHarbour

Regards
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply