Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cómo guardar el símbolo del euro (€) (https://www.clubdelphi.com/foros/showthread.php?t=91353)

bulc 12-01-2017 17:02:25

Cómo guardar el símbolo del euro (€)
 
Hola.
Tengo una base de datos definida como: DEFAULT CHARACTER SET = ISO8859_1 y COLLATION ES_ES. y en ella una tabla con un campo VARCHAR en la que guardo precios de dos enteros y dos decimales.
Quiero que guarde el símbolo del euro al final. Una vez colocado €, por ejemplo 20,50€, resulta que Firebird lo guarda como 20,50?.
?Que carácter set debo usar? o lo que es lo mismo, ¿dónde está el error?
He visto un ejempo aquí con el símbolo 'Tic OK' la V con el brazo derecho alargado, pero no lo pillo.
Tampoco sé que combinación Alt+XXX debo usar para obtenerlo.
Saludos.

aposi 12-01-2017 17:15:15

hola, en el ISO-8859-1 no existe el caracte € https://es.wikipedia.org/wiki/ISO/IEC_8859-1
Tendias que passar a ISO-8859-15 https://es.wikipedia.org/wiki/ISO/IEC_8859-15

Por que guardas numeros en un campo VARCHAR?
No seria mas facil guardar como numerico y añadir el € al presentar el numero? (por tema de posibles calculos sobre estos numeros)

bulc 12-01-2017 17:24:55

Por esta razón
 
Uso un campo Varchar porque se refiere al precio de un sello.
Los sellos pueden estar en Cuartos, Reales, Maravedíes, Pesetas, Euros...
Y para buscar un sello, aparte de su 'nombre' o el texto que lleva el sello se usa el valor facial, entre otros... Ya que todos tienen su valor facial. En cambio muchos no llevan texto ninguno,
salvo el del país emisor.
Ya he valorado otras opciones, pero ésta es casi, casi, la mejor.
De ahí que use un Varchar. Ten en cuenta que yo soy muy rústico en esto de Delphi/Firebird.
Ahora bien, si me sugieres usar otro medio lo probaré. Y esto me da pie para preguntar si puedo añadir un campo Varchar con ese ISO nuevo para pasar los datos al nuevo campo y borrar el viejo. ¿Se puede?
Quedo a la espera de tu comentario y recibe un agradecido saludo por tu ayuda e interés.
bulc

Casimiro Notevi 12-01-2017 19:05:51

Cita:

Empezado por bulc (Mensaje 512318)
Y esto me da pie para preguntar si puedo añadir un campo Varchar con ese ISO nuevo para pasar los datos al nuevo campo y borrar el viejo. ¿Se puede?

Se puede.
De todas formas, en valor numérico es un valor numérico. Yo tendría dos campos, uno para el valor numérico y otro para la moneda que corresponda.
Código SQL [-]
create table tbSellos (
  ...
  nombre varchar(64),
  valor numeric(12,4) default 0,
  divisa varchar(16) character set UTF8 collate ES_ES_CI_AI,    /* o ISO8859_15 si lo prefieres */
  ...
)

bulc 12-01-2017 20:29:00

Añadiendo...
 
Gracias Notevi. Tomo nota.
Entiendo tu razonamiento de tener dos campos separados. Lo sopesé en el momento del diseño. Con una letra está la cosa solucionada y a la hora de la búsqueda es más directo.
No es lo mismo buscar en dos campos que en uno. Así para buscar 2 reales. Uso 2,00R, para 3 cuartos, 3,00C, pesetas P, y euros €.
Así 2 pesetas es 2P o 2,00P, etc.
De momento va sin problemas.
Esa es la única razón. De todos modos me pone muy contento ver que siempre dais en el clavo potenciando lo poco que uno sabe.
Un saludo afectuoso.

bulc

bulc 13-01-2017 19:59:50

No he ha funcionado...
 
He añadido un campo tal como dices:
ALTER TABLE XXX ADD nuevo_campo varchar(7) character set... ect.
el campo aparece correctamente pero al guardar el símbolo del euro los guardar como '?'
Seguiré probando...
Saludos.
bulc

Casimiro Notevi 13-01-2017 20:16:01

Pues habría que ver cómo lo haces.
Mira un ejemplo con texto en griego, chino, árabe y el símbolo del euro.



En este caso es UTF8

bulc 15-01-2017 18:08:04

Una cosa rara
 
Me ha pasado una cosa rara. Tengo un ordenador anterior sin Firebird y le había instalado una compilación Embeded con los mismos archivos de Base de Datos y resulta que sí guarda el euro sin problemas.
He de mirar, cuando pueda, qué definición tiene de base de datos y de tabla. Pero me he quedado muy extrañado.
Añado.
bulc

bulc 16-01-2017 19:44:43

Esto he encontrado: character set ISO8859_15
 
Búscando solucíón al euro -que no acabo de entender- he hallado
http://www.deister.net/es/locale-par...e-euroe-en-bd/
Viene a decir que la norma ISO8859_15 es una variante que introduce el símbolo del euro y algunos otros a base de quitar otros tantos, poco usados, de la norma ISO8859_1.
Saludos,
bulc

Casimiro Notevi 16-01-2017 19:47:23

Efectivamente, tal y como ha comentado aposi en el mensaje #2

bulc 27-05-2017 11:36:16

Firebird 2_5 no tiene definido ISO8859_15
 
He probado a crear un DataBase con ese Default Character Set (el ISO8859_15) y me dice que no está definido para Firebird_2_5.
Así que sigo usando el Character Set ISO8859_1 COLLATION ES_ES_CI_AI, que sí que funcionan.
El caso es que en el modo cmd (prompt de comandos) si que sale pulsando E+AltGr el símbolo del euro.

Alguien sabe:
1.- Si Firebird 3_2 acepta el ISO8859_15.
2.- Si en los listados SELECT de Firebird_3_2 ya sale el símbolo del euro?

Y si no iré pensando en instalarlo.

Gracias.

Casimiro Notevi 27-05-2017 17:00:41

Se supone que sí, pero de todas formas vuelvo a repetir que no debes guardar el símbolo en la moneda: 5.25€ 80.33$ etc. por varios motivos, ¿no serían campos numéricos, sino varchar, por lo que no podrás haces cálculos con ellos, sumas, etc.

bulc 27-05-2017 19:11:51

Si, en eso llevas razón: simbolo y cantidad separados
 
Pero se me escapa por qué si el prompt del DOS (cmd) contiene el símbolo del euro y sin embargo los listados Select no lo muestran.

Debo repetir que el Firebird 3_2 no tiene definido el ISO8859_15 por lo que uso ISO8859_1 COLLATION ES_ES_CI_AI y luego en la definición concreta del campo donde va el símbolo del euro UTF8.
Eso es lo que he comprobado.
Saludos.

Casimiro Notevi 27-05-2017 21:21:45

Cita:

Empezado por bulc (Mensaje 517253)
... uso ISO8859_1 COLLATION ES_ES_CI_AI y luego en la definición concreta del campo donde va el símbolo del euro UTF8.

El iso8859_1 no tiene el simbolo del euro.

Casimiro Notevi 27-05-2017 21:47:44

Cita:

Empezado por bulc (Mensaje 517253)
Pero se me escapa por qué si el prompt del DOS (cmd) contiene el símbolo del euro y sin embargo los listados Select no lo muestran.

Porque el cmd es una ventana de windows y mostrará lo que tengas configurado en windows.
No entiendo qué quieres decir con lo de "los listados select".

Cita:

Empezado por bulc (Mensaje 517253)
Debo repetir que el Firebird 3_2 no tiene definido el ISO8859_15 por lo que uso ISO8859_1 COLLATION ES_ES_CI_AI y luego en la definición concreta del campo donde va el símbolo del euro UTF8.

Firebird 3 puede usar iso8859_15, pero si tú no lo usas, entonces ¿cómo esperas que guarde el símbolo del euro, si el iso8859_1 no lo tiene?
Tampoco entiendo lo que dices sobre "definición concreta del campo donde va el símbolo del euro UTF8", ¿que tienes defiinido ese campo como utf8?

Creo que te estás complicando tú mismo, la cosa es fácil, crea una base de datos iso8859_15, o mejor todavía, créala como utf8.

El collate es para la ordenación, no tiene nada que ver con los caracteres definidos, en tu caso: ES_ES_CI_AI indica que ordenará teniendo en cuenta palabras acentuadas y demás, y las tratará como iguales, o sea, que será lo mismo: Camión, camion, caMion, etc.


La franja horaria es GMT +2. Ahora son las 03:02:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi