Problema con campos con apostrofes (SOLUCIONADO)
Problema con campos con apostrofes (SOLUCIONADO)
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
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Re: Problema con campos con apostrofes
Usa la funcion MYSQL_ESCAPE_STRING asi:
valorParaEscribirEnFichero = MYSQL_ESCAPE_STRING( ValorDelCampoDeMySQL )
valorParaEscribirEnFichero = MYSQL_ESCAPE_STRING( ValorDelCampoDeMySQL )
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía
Re: Problema con campos con apostrofes
xManuel:
Gracias por tu apoyo, pero no funca, me reclama que no existe la función,
este es el código:
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
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] + "'"
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Re: Problema con campos con apostrofes
Hola,
Que estas usando para conectarte a mysql ?
Slds,
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
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
Re: Problema con campos con apostrofes
Nicanor:
ODBC
Saludos
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
- armando.lagunas
- Posts: 340
- Joined: Mon Oct 05, 2009 3:35 pm
- Location: Curico-Chile
- Contact:
Re: Problema con campos con apostrofes
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:
el chr(39) es el apostrofe y el chr(96) es como el acento al revés
Saludos
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
Saludos
Re: Problema con campos con apostrofes
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
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Re: Problema con campos con apostrofes
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.
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
Sevilla - Andalucía
Re: Problema con campos con apostrofes
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
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Problema con campos con apostrofes
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:
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.
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] + "'"
StrTran( cValue, "'", "\'" )
Please let us know if you still have problem.
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: Problema con campos con apostrofes
Mr. Rao:
With the next code
I get the "Unresolved function error message"
The solution was the code.
Thanks for your appreciated help.
Regards
With the next code
Code: Select all
"est_des = '" + MYSQL_ESCAPE_STRING( aFields[05] ) + "'," +;
The solution was the
Code: Select all
StrTran( cValue, "'", "\'" )
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Problema con campos con apostrofes (SOLUCIONADO)
May I know your FWH Version?
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Problema con campos con apostrofes (SOLUCIONADO)
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
G. N. Rao.
Hyderabad, India
Re: Problema con campos con apostrofes (SOLUCIONADO)
Mr. Rao:
Yes, of course, FWH0810 and xHarbour
Regards
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero