Harbour y MySQL - tildes y eñes

Harbour y MySQL - tildes y eñes

Postby José » Tue Nov 23, 2021 4:27 pm

Hola a todos

Un gusto, después de años de nuevo por acá... para preguntar esta vez... y para quedarme...

Tengo un sistema con xHarbour + Eagle1 para ddbb MySQL. Lo estoy migrando a HB 3.2 + FWH 20.07 + Borland C++ 7.0 + Pelles C 9.0 + MySQL/MariaDB 10.3 + xMate, en 32 bit.

La versión anterior todo bien con las tildes y eñes en MySQL. Pero en la nueva con HB que entiendo es con MySQL nativo, las vocales tildadas y las eñes se graban y leen con un "?"

He intentado todo lo posible, leyendo todo lo encontrado... y nada. Lo hecho por ejemplo es:

* La Tabla MySQL y el campo/columna tienen Charset latin1, Collation latin1_spanish_ci (entiendo que con Eagle1 podía tener otro y aún así operar bien)

* En el proyecto incluí la librería dolphin.lib de FWH para que al compilar acepte el Set_MyLang( 'es_ES' )

* Uso esto en el init PROCEDURE

Set Exact on
request hb_gt_win
set talk off
set echo off
set bell off
set confirm off
set wrap on
set date french
set date format 'dd/mm/yyyy'
set century on
Request DBFCDX, DBFFPT, OrdCreate, OrdKeyCount, OrdKeyNo, OrdKeyGoto
RddSetDefault( 'DBFCDX')
set deleted on
set autopen off
set exclusive on
Set optimize on
cursorwait()
readinsert( .t. )
SetBalloon( .T. )
setresdebug( .F. )
clear all
FwSetLanguage( 2 )
Request HB_LANG_ES
HB_LangSelect( 'ES' )
request HB_CODEPAGE_ESWIN
HB_SetCodePage( 'ESWIN' )
HB_CDPSELECT( 'ESWIN' )
Fw_SetUnicode( .F. )
Set_MyLang( 'es_ES' )

Saco, cambio, agrego... y nada...

* El proyecto incluye FWH...\lib\libmysql.lib y también agregué desde las lib de Harbour el rddsql.lib por si acaso, pero nada.

Como no se que más hacer, por favor solicito ayuda.

Muchas gracias
José Concha Leiva - Chile
"Querer, saber y hacer, es poder"
HB MSVSC + FWH 23.10 + MySQL/MaríaDB/DBFCDX (64 bits)
https://zenitx.com
User avatar
José
 
Posts: 38
Joined: Sat Dec 10, 2016 8:58 pm

Re: Harbour y MySQL - tildes y eñes

Postby JoseAlvarez » Tue Nov 23, 2021 7:23 pm

Hola José,

Prueba configurando

Utf8_spanish_ci y utf_unicode_ci
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 726
Joined: Sun Nov 09, 2014 5:01 pm

Re: Harbour y MySQL - tildes y eñes

Postby José » Tue Nov 23, 2021 8:16 pm

JoseAlvarez

Hola, gracias por responder!.

Probé en la tabla (que es MyISAM) y en el campo, definiendo Charset: utf8, y Collation: utf8_spanish_ci y utf8_unicode_ci... pero sigue el mismo error.

Quedo atento por favor a más sugerencias o experiencias.
José Concha Leiva - Chile
"Querer, saber y hacer, es poder"
HB MSVSC + FWH 23.10 + MySQL/MaríaDB/DBFCDX (64 bits)
https://zenitx.com
User avatar
José
 
Posts: 38
Joined: Sat Dec 10, 2016 8:58 pm

Re: Harbour y MySQL - tildes y eñes

Postby Antonio Linares » Wed Nov 24, 2021 4:25 am

José,

Bienvenido nuevamente a bordo :-)

Enviado email al Sr. Rao y a Manu para que nos echen una mano con Eagle1 y MySQL

Te respondemos cuanto antes
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Harbour y MySQL - tildes y eñes

Postby José » Wed Nov 24, 2021 1:42 pm

Hola Antonio

Muchas gracias, quedo atento porque es muy importante para mi migrar a MySQL/MariaDB con Harbour.

Gracias y felicitaciones a todos los que crean y aportan en todos estos productos.
José Concha Leiva - Chile
"Querer, saber y hacer, es poder"
HB MSVSC + FWH 23.10 + MySQL/MaríaDB/DBFCDX (64 bits)
https://zenitx.com
User avatar
José
 
Posts: 38
Joined: Sat Dec 10, 2016 8:58 pm

Re: Harbour y MySQL - tildes y eñes

Postby sysctrl2 » Wed Nov 24, 2021 11:49 pm

La tabla debe de crearse de la siguiente forma:
poner atención en esta linea de codigo:
cQry += "ENGINE=InnoDB DEFAULT CHARSET=latin1"

Code: Select all  Expand view

METHOD CreaPermisos_users( oCon ) class CreaTablas
  local cQry, oQry

  cQry := "CREATE TABLE IF NOT EXISTS permisos_users ( "
  cQry += "id_permisos_users INT UNSIGNED NOT NULL AUTO_INCREMENT,"
  cQry += "user_code         varchar(15) default '', "
  cQry += "modulo         varchar(100) default '', "
  cQry += "permitir   varchar(1) default 'N', "
  cQry += "depto   varchar(50) default '', "
  cQry += "PRIMARY KEY (id_permisos_users ) , INDEX (user_code)  ) "
  cQry += "ENGINE=InnoDB DEFAULT CHARSET=latin1"
  oCon:Execute( cQry )

Return nil

 


Saludos !
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 951
Joined: Mon Feb 05, 2007 7:15 pm

Re: Harbour y MySQL - tildes y eñes

Postby José » Thu Nov 25, 2021 12:43 am

Gracias Sysctrl2 por tu respuesta.

He hecho el cambio
Table engine: InnoDB
Charset: latin1
Collation: latin1_spanish_ci

Cambio comprobado con herramientas externas, para la tabla y para los campos; pero no corrige el error: sigue reemplazando con '?' las letras con tilde y las eñes.

Sigo atento.
José Concha Leiva - Chile
"Querer, saber y hacer, es poder"
HB MSVSC + FWH 23.10 + MySQL/MaríaDB/DBFCDX (64 bits)
https://zenitx.com
User avatar
José
 
Posts: 38
Joined: Sat Dec 10, 2016 8:58 pm

Re: Harbour y MySQL - tildes y eñes

Postby sysctrl2 » Thu Nov 25, 2021 12:58 am

Jose puedes crear una nueva tabla
desde tu aplicación ?
saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 951
Joined: Mon Feb 05, 2007 7:15 pm

Re: Harbour y MySQL - tildes y eñes

Postby JoseAlvarez » Thu Nov 25, 2021 1:29 am

José wrote:Gracias Sysctrl2 por tu respuesta.

He hecho el cambio
Table engine: InnoDB
Charset: latin1
Collation: latin1_spanish_ci

Cambio comprobado con herramientas externas, para la tabla y para los campos; pero no corrige el error: sigue reemplazando con '?' las letras con tilde y las eñes.

Sigo atento.


José,

No te sugerí nada mas porque leí que usabas MYISAM, como veo que estas probando con INNODB, trata configurando la base de datos y los campos alfanumericos de las tablas (uno a uno) con utf_8 y utf8_general_ci

Intenta con eso... puedes crear una base de datos con una tabla de un solo campo para que hagas las pruebas.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 726
Joined: Sun Nov 09, 2014 5:01 pm

Re: Harbour y MySQL - tildes y eñes

Postby xmanuel » Mon Nov 29, 2021 1:21 pm

Hola José...
Soy Manu Expósito el desarrollador de Eagle1.
He estado fuera un tiempo y cuando he vuelto Antonio me ha enviado un correo para ver este problema con la nueva versión y Eagle1.
No sé si aún sigues teniendo el problema...
Si es así dime exactamente qué ocurre.
Si quieres a mi correo xmessoft en gmail
Luego si quieres publicas aquí la solución por si alguien tiene ese mismo problema.
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 756
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Harbour y MySQL - tildes y eñes

Postby José » Fri Dec 03, 2021 5:01 am

Buenas noches

Gracias a todos por sus respuestas y apoyo. JoseAlvares, Cesar, Antonio, Manu. SOLUCIONADO

1.- Lo que estoy procurando hacer es usar MySQL / MaríaDB con FWH 21.06 + HB 3.2 y los recursos nativos (o así lo entiendo) proporcionados por estas herramientas.

2.- Si, puedo crear bases de datos y tablas desde dentro de mi aplicación, eso me sirvió para hacer múltiples pruebas con sus sugerencias!

3.- Finalmente, lo que me funciona bien es configurar el software así:

FwSetLanguage( 2 )
Request HB_LANG_ES
HB_LangSelect( 'ES' )
request HB_CODEPAGE_ESWIN
HB_SetCodePage( 'ESWIN' )
HB_CDPSELECT( 'ESWIN' )
Fw_SetUnicode( .F. ) ---> debe ser .F. !!!
Set_MyLang( 'es_ES' )

y las tablas con:
Table Engine: InnoDB
Charset: latin1
Collation: latin1_general_ci

y las columnas con:
Charset: latin1
Collation: latin1_general_ci (u otros latin1_... también)

4.- De esta forma puedo grabar y leer datos hacia y desde la ddbb MySQL con la versión del sistema que aún uso (FW + xHb + Eagle1...de hace varios años) y con la que estoy evolucionando con las herramientas antes mencionadas, indistintamente, y todo Ok con los tildes y las eñes.

* Finalmente dos preguntas:

¿Desde su experiencia algún consejo respecto a usar InnoDB o MyISAM?. He leído y visto material pero no me queda claro.

¿Para que la ddbb y el sistema soporte idiomas como el Chino, que se debe hacer?. Por lo estudiado entiendo que definir Fw_SetUnicode( .F. ) y todo lo demás a español o latino como tuve que hacer, lo impediría. Esto no me apura, pero si puedo considerarlo desde ya, mejor.

Nuevamente muchas gracias por todo!!!... espero que lo que funcionó le sirva a alguien más.
José Concha Leiva - Chile
"Querer, saber y hacer, es poder"
HB MSVSC + FWH 23.10 + MySQL/MaríaDB/DBFCDX (64 bits)
https://zenitx.com
User avatar
José
 
Posts: 38
Joined: Sat Dec 10, 2016 8:58 pm

Re: Harbour y MySQL - tildes y eñes

Postby Carles » Fri Dec 03, 2021 12:41 pm

Hola,

Probad cuando conecteis con la base de datos de ejecutar esta query antes que cualquier otra --> "SET NAMES utf8"

C.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Harbour y MySQL - tildes y eñes

Postby carlos vargas » Sat Dec 04, 2021 4:24 am

Lo poco que se es que myisam fue
Uno de los primeros motores de
Mysql, no soporta transacciones, pero es
Muy rapido recuperando informacion, de ahi que se usa mucho en desarrollo web, innodb soporta transacciones lo cual implica que usa mas
memoria, espacio en disco y es mas lento que myisam, innodb es lo adecuado para
Nuestras aplicaciones.

Algunos usan ciertas tablas en myisan y otras en innodb, por ejemplo recuerdo de alguien que recomendo
usar tablas myisam para cuando
guardemos documentos en campos blob a lo cauo estoy de acuerdo dado que no tiene sentido usar transacciones en este caso y por lo general los datos tienen un buen tamaño lo que lo hace no recomentable usar trans.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Harbour y MySQL - tildes y eñes

Postby JoseAlvarez » Sat Dec 04, 2021 12:54 pm

Buenos dias carlos, buenos dias a todos.

La verdad que no se me habia ocurrido usar ambos tipos de tablas combinados.

Voy a probar.

Gracias carlos ¡ la informacion es muy util para optimizar las aplicaciones
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 726
Joined: Sun Nov 09, 2014 5:01 pm

Re: Harbour y MySQL - tildes y eñes

Postby José » Sat Dec 04, 2021 9:49 pm

Hola a todos

Carles, gracias, haré pruebas con tu sugerencia.
Carlos. Gracias por la información, tomo nota y lo aplicaré

Mi última pregunta acá, para sus sugerencias de mejora. Gracias.

por ahora tengo algunos ciclos para llenar datos MySQL como este (resumido para preguntar por la lógica):

while ...
oMyQue := oMyCon:RowSet( 'select count(*) from ' + cTabla + ' where ' + cCMy + ' = "' + &cCDbf + '" limit 1' )
if oMyQue # nil
nCmd := 0
if oMyQue:FieldGet( 1 ) = 0 // contó cero reg: clave no existe
do case
// Tablas...
case cTabla = 'CLIENTES'
nCmd := MySincClienteCrea() --> crear el registro de cliente con insert... devolviendo nCmd
....
....
endcase
if nCmd # Nil .and. nCmd > 0 // ok, reg creado
.... ok
else
// avisar que hubo un error...
endif
endif
else
...consulta verificar si reg existe falló
endif
if oMyQue # Nil
oMyQue:End() --> ¿está bien o mal hacerlo? ¿aporta a rendimiento o es malo?
endif
enddo

¿Esto se puede reemplazar por una forma más profesional o segura u optimizada?

De nuevo muchas gracias a todos, que disfruten un excelente fin de semana...
José Concha Leiva - Chile
"Querer, saber y hacer, es poder"
HB MSVSC + FWH 23.10 + MySQL/MaríaDB/DBFCDX (64 bits)
https://zenitx.com
User avatar
José
 
Posts: 38
Joined: Sat Dec 10, 2016 8:58 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 73 guests