FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Problema con campos con apostrofes (SOLUCIONADO)
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Problema con campos con apostrofes (SOLUCIONADO)
Posted: Thu Jan 19, 2017 09: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

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
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM
Re: Problema con campos con apostrofes
Posted: Fri Jan 20, 2017 01:08 PM

Usa la funcion MYSQL_ESCAPE_STRING asi:

valorParaEscribirEnFichero = MYSQL_ESCAPE_STRING( ValorDelCampoDeMySQL )

______________________________________________________________________________

Sevilla - Andaluc铆a
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Problema con campos con apostrofes
Posted: Sat Jan 21, 2017 02:03 AM
xManuel:

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

Code (fw): Select all Collapse
聽 聽 聽 聽 聽 聽 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
Posts: 302
Joined: Fri Apr 23, 2010 04:30 AM
Re: Problema con campos con apostrofes
Posted: Sat Jan 21, 2017 02: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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Problema con campos con apostrofes
Posted: Sat Jan 21, 2017 02: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
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM
Re: Problema con campos con apostrofes
Posted: 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 (fw): Select all Collapse
//--- 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




Saludos
SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Problema con campos con apostrofes
Posted: Sat Jan 21, 2017 03: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
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM
Re: Problema con campos con apostrofes
Posted: Sat Jan 21, 2017 06: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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Problema con campos con apostrofes
Posted: Sat Jan 21, 2017 07: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
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Problema con campos con apostrofes
Posted: 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 (fw): Select all Collapse
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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Problema con campos con apostrofes
Posted: Sun Jan 22, 2017 11:34 PM
Mr. Rao:

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


I get the "Unresolved function error message"

The solution was the
Code (fw): Select all Collapse
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
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Problema con campos con apostrofes (SOLUCIONADO)
Posted: Sun Jan 22, 2017 11:41 PM

May I know your FWH Version?

Regards



G. N. Rao.

Hyderabad, India
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Problema con campos con apostrofes (SOLUCIONADO)
Posted: Mon Jan 23, 2017 12:03 AM
You can also try
Code (fw): Select all Collapse
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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Problema con campos con apostrofes (SOLUCIONADO)
Posted: Mon Jan 23, 2017 04: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

Continue the discussion