ñ en mysql

185 views
Skip to first unread message

olga galeano

unread,
Jan 27, 2022, 8:40:34 AM1/27/22
to publice...@googlegroups.com
estoy pasando todas mis tablas dbf a mysql, pero los acentos, ñ y otros caracteres me pasa ilegibles.


Alguna ayuda x favor

Gracias

Cristian Novoa

unread,
Jan 27, 2022, 8:45:10 AM1/27/22
to Comunidad de Visual Foxpro en Español
Haz una prueba con la tabla ya traspasada en mysql, cambiando una columna de una tabla, reemplazando el caracter extraño por el correcto, y hazlo con todos los caracteres extraños. Con esto, ya sabes que puedes arreglar todo. Para arreglar todo, recorres todas las tablas, y todas las columnas de cada tabla, y le aplicas la función de cadena que reemplaza.

Víctor Hugo Espínola Domínguez

unread,
Jan 27, 2022, 10:12:20 AM1/27/22
to publice...@googlegroups.com
Si esos caracteres ilegibles los ves al traer datos desde Mysql a VFP entonces pon Sys(987, .T.) en el inicio del programa principal.

Saludos,
Víctor.
Lambaré - Paraguay.



--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CAOrtramEvrRRE%3DkeQQ7J6iPiK4VkCQfvLsr4u57Vc4KuDaNbyA%40mail.gmail.com.

Antonio Lima

unread,
Jan 27, 2022, 4:10:30 PM1/27/22
to publice...@googlegroups.com
Hola Olga,

No se si estamos hablando de la mismo pero al crear la base de datos 
las creamos con el collation latin1_swedish_ci  

y cuando realizamos la conexión,

Si la version de Mysql es menor de 8
enviamos el siguiente comando.
    SET CHARACTER_SET_SERVER='LATIN1', CHARACTER_SET_DATABASE='LATIN1', CHARACTER_SET_CLIENT='UTF8', CHARACTER_SET_CONNECTION='UTF8'

Si la version de Mysql es = 8
SET CHARACTER_SET_SERVER='LATIN1', CHARACTER_SET_CLIENT='LATIN1', CHARACTER_SET_CONNECTION='LATIN1'


image.png

Si te quieres conectar a nuestro equipo en remoto para verlo me avisas.

Saludos,


olga galeano

unread,
Jan 27, 2022, 7:46:24 PM1/27/22
to publice...@googlegroups.com
Hola Víctor, recién me doy cuenta en el mysql

olga galeano

unread,
Jan 27, 2022, 7:51:06 PM1/27/22
to publice...@googlegroups.com
Hola Antonio, nose donde poner la sentencia que me indicas si me podes ayudar, yo uso el sqlyog 

Resulta que que yo creo la base de datos en sqlyog y luego paso todas las tablas a esa base de datos 

Antonio Lima

unread,
Jan 27, 2022, 8:30:32 PM1/27/22
to publice...@googlegroups.com
Hola Olga,

Puedes gestionar la creación de la bbdd y de las tablas e indices desde SQLYOG o desde cualquier otro FrontDesk.
La sentencia se envia luego de realizar la conexión en tu aplicación, como si enviaras un SELECT o un INSERT.
En su oportunidad nosotros migramos los datos de las tablas de VFP a MySQL, lo hicimos directamente desde VFP

Para poder subir los datos con Ñ o con tíldes lo hicimos de la forma que te comentaba.

Te envio código de ejemplo,  lo he teclado ahora mismo, espero que no vayan errores.
En tu aplicación, cuando te conectas a MySQL, Creas una conexión a la bbdd. básicamente de esta forma y luego envias las sentencias.

*- Conectamos a la BBDD por medio de la cadena de conexión
SQLSETPROP(0,"DispLogin" , 3 )
tnHnd = SQLSTRINGCONNECT(lcStringConexion)

llResult = tnHnd >0

*- No se ha podido conectar
IF !llResult
    Messagebox("Error al conectar")
ENDIF

*- Hemos conectado
IF llResult
    *- Enviamos las sentencias
   =SQLEXEC( tnHnd, "set autocommit=0")                && no hacer autocomit
   =SQLEXEC( tnHnd, "set session sql_mode = ''")     && no utilizar modo estricto
   =SQLEXEC( tnHnd, "SET CHARACTER_SET_SERVER='LATIN1', CHARACTER_SET_DATABASE='LATIN1', CHARACTER_SET_CLIENT='UTF8', CHARACTER_SET_CONNECTION='UTF8'")  

   *- Abrimos la tabla que queremos migrar
   USE TABLA1

       *- Nos aseguramos que no hay registros en la tabla de MySQL por si tenemos que volver a subir los datos
       TEXT TO lcSQL TEXTMERGE NOSHOW PRETEXT 3
           DELETE FROM   MySQL_TABLA 
       ENDTEXT
       =SQLEXEC( tnHnd, lcSQL)

   SCAN
       *- Aqui pones la instrucción INSERT que utilizas para subir los campos de la tabla
       TEXT TO lcSQL TEXTMERGE NOSHOW PRETEXT 3
           INSERT INTO MySQL_TABLA (ID, CAMPOTEXTO, ...) VALUES ( <<LTRIM(STR(CAMPOID))>>, '<<ALLTRIM(CAMPOTEXTO)>>'...)
       ENDTEXT
       =SQLEXEC( tnHnd, lcSQL)
   ENDSCAN

   *- Cerramos la tabla 
   USE IN SELECT("TABLA1")

   *- Cerramos la conexión.
   =SQLDISCONECT(tnHnd)
ENDIF









Antonio Lima

unread,
Jan 27, 2022, 8:44:25 PM1/27/22
to publice...@googlegroups.com
Me parece que en el codigo de arriba no debes poner el autocommit = 0
comenta esta linea
=SQLEXEC( tnHnd, "set autocommit=0")                && no hacer autocomit

olga galeano

unread,
Jan 28, 2022, 7:48:10 AM1/28/22
to publice...@googlegroups.com
gracias voy a probar


Reply all
Reply to author
Forward
0 new messages