Harbour X NFE X MySql

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Harbour X NFE X MySql

Mensagem por JoséQuintas »

Tenho salvo XMLs em banco MySql.
O problema é: conjunto de caracteres.

É complicado mexer com isso.
Fica dependente do conjunto do Harbour, do conjunto do ADO, e do conjunto do MySql.
Para notas emitidas, pelo sistema, eu já limito quais os caracteres podem ser usados.
Mas nota de fornecedor, pode conter caracteres especiais.

Como fazer pra isso dar certo?
- Usando ADO
- Que caracteres usar no banco
- Algum parâmetro adicional na string de conexão
- Alguma conversão no Harbour

Obs. pra caracteres especiais, uso o \ na string, o banco está como UTF-8, mas mesmo assim dá diferença em ã por exemplo, onde no XML tem Chr(195)+"ã"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
runner
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 03 Ago 2007 05:17
Localização: GUARULHOS-SP

Harbour X NFE X MySql

Mensagem por runner »

Olá, José Quintas


Para evitar este tipo de situação o correto e transformar todos os caracteres em hexadecimal e ai salva no mysql, quando precisar da informação e só transformar em decimal.

Eu fiz assim para salvar imagem JPG no mysql.


Marcio Souza
Harbour 3.2 + Minigui Extended 16 + xDev
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Harbour X NFE X MySql

Mensagem por JoséQuintas »

Isso vai dobrar o tamanho dos XMLs, e vai necessitar conversão...
Mas pelo menos vai ser uma solução.
Talvez no XML compense uma mistura, igual acontece com página de internet, em caracteres diferentes usar "e comercial" + hexa

O negócio agora vai planejar ser a mudança durante o uso.
Provavelmente uma flag pra indicar se o registro está convertido.

Valeu.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Harbour X NFE X MySql

Mensagem por fladimir »

Deu certo José?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Harbour X NFE X MySql

Mensagem por alxsts »

Olá!

Acho muita mão de obra converter para hexa e de hexa. Creio que usando o collation correto no banco resolve o problema.

Tente criar a tabela abaixo, e inserir alguns XMLs. Veja se dá certo.

Código: Selecionar todos

CREATE TABLE 'acento' (
  'id' int(4) unsigned zerofill NOT NULL AUTO_INCREMENT,
  'texto' varchar(8000) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY ('id')
) ENGINE=InnoDb DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ;
Pode postar um XML para testes?
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Harbour X NFE X MySql

Mensagem por JoséQuintas »

O emissor oficial, depois de algum tempo, estraga XMLs autorizados.
Após transmissão, o XML do governo está diferente do que foi enviado.
A maioria dos clientes nem sequer salva XMLs recebidos.
XMLs por email, alguns se estragam, porque certos softwares ou leitores de email teimam em usar codepage pra XMLs.

Se o governo e o cliente não se importam.... nem eu.
Faço o melhor que posso e só.

Para os XMLs emitidos, que são gerados pelo ERP, está tudo certo, não há problema.
Para os XMLs recebidos, eventualmente há algum que se deforma, mas muito poucos.

Tem que lembrar que:
Os XMLs do ERP são gerados em Ascii (ou UTF-8)
Os XMLs recebidos, podem ser em Ascii ou UTF-8

Resumindo: Sempre vai ter XML diferente, não importa o cuidado que tome.

Sobre o collation do MySql....
Tanto faz. O que manda é a conexão.
Basta setar a codepage na conexão, que será convertido pra ficar compatível com a codepage do banco de dados.
Aprendi isto nestes dias.

E a propósito: Em 2008, primeiro ano da NFE, os XMLs não continham o protocolo.
Hoje esses XMLs oficiais seriam considerados inválidos.
Será que compensou guardar?.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Harbour X NFE X MySql

Mensagem por JoséQuintas »

Só pra dar uma idéia, apesar do MySql não mostrar número exato de registros nessa tela.
Mais de 200.000 XMLs, desde 2008.
Já vi de tudo.
Anexos
xmls.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder