Problema con campos con apostrofes (SOLUCIONADO)

Problema con campos con apostrofes (SOLUCIONADO)

Postby Armando » Thu Jan 19, 2017 9:40 pm

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

Re: Problema con campos con apostrofes

Postby xmanuel » Fri Jan 20, 2017 1:08 pm

Usa la funcion MYSQL_ESCAPE_STRING asi:

valorParaEscribirEnFichero = MYSQL_ESCAPE_STRING( ValorDelCampoDeMySQL )
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 756
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Problema con campos con apostrofes

Postby Armando » Sat Jan 21, 2017 2:03 am

xManuel:

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

Code: Select all  Expand view

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

Re: Problema con campos con apostrofes

Postby nnicanor » Sat Jan 21, 2017 2:30 am

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
nnicanor
 
Posts: 295
Joined: Fri Apr 23, 2010 4:30 am
Location: Colombia

Re: Problema con campos con apostrofes

Postby Armando » Sat Jan 21, 2017 2:35 am

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
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Problema con campos con apostrofes

Postby armando.lagunas » Sat Jan 21, 2017 12:01 pm

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  Expand view


//--- para guardarlo en el campo de una base de datos

        cApellido := 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
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Problema con campos con apostrofes

Postby Armando » Sat Jan 21, 2017 3:29 pm

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

Re: Problema con campos con apostrofes

Postby xmanuel » Sat Jan 21, 2017 6:29 pm

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
xmanuel
 
Posts: 756
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Problema con campos con apostrofes

Postby Armando » Sat Jan 21, 2017 7:21 pm

xManuel:

En ambos casos, 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
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Problema con campos con apostrofes

Postby nageswaragunupudi » Sun Jan 22, 2017 11:22 pm

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  Expand view

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
nageswaragunupudi
 
Posts: 10248
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Problema con campos con apostrofes

Postby Armando » Sun Jan 22, 2017 11:34 pm

Mr. Rao:

With the next code
Code: Select all  Expand view
"est_des = '" + MYSQL_ESCAPE_STRING( aFields[05] ) + "'," +;
 


I get the "Unresolved function error message"

The solution was the
Code: Select all  Expand view
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
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Problema con campos con apostrofes (SOLUCIONADO)

Postby nageswaragunupudi » Sun Jan 22, 2017 11:41 pm

May I know your FWH Version?
Regards

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

Re: Problema con campos con apostrofes (SOLUCIONADO)

Postby nageswaragunupudi » Mon Jan 23, 2017 12:03 am

You can also try
Code: Select all  Expand view
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
nageswaragunupudi
 
Posts: 10248
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Problema con campos con apostrofes (SOLUCIONADO)

Postby Armando » Mon Jan 23, 2017 4:35 pm

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 82 guests