Jump to content
Fivewin Brasil

Acentuação com SQLLIB


ecmsoft

Recommended Posts

Olá,

Estou tendo problemas em fazer com que o xHarbour reconheça a tabela de caracteres do Servidor MySQL (5.0), portanto quando preencho um campo com caractere acentuado, dá o seguinte erro:

Error description: Warning SQLLIB/1000 MySQL RDD: Data too long for column 'NOMFUNC' at row 1

Uso a versão FREE da SQLLIB

ECM SISTEMAS

Marciano Queiroz

Teixeira de Freitas-Ba

ecmsoft.tx@ig.com.br

FW 2.6 + xHarbour 0.99.4

Link to comment
Share on other sites

Olá,

Estou tendo problemas em fazer com que o xHarbour reconheça a tabela de caracteres do Servidor MySQL (5.0), portanto quando preencho um campo com caractere acentuado, dá o seguinte erro:

Error description: Warning SQLLIB/1000 MySQL RDD: Data too long for column 'NOMFUNC' at row 1

Uso a versão FREE da SQLLIB

ECM SISTEMAS

Marciano Queiroz

Teixeira de Freitas-Ba

ecmsoft.tx@ig.com.br

FW 2.6 + xHarbour 0.99.4

Link to comment
Share on other sites

Olá,

Estou tendo problemas em fazer com que o xHarbour reconheça a tabela de caracteres do Servidor MySQL (5.0), portanto quando preencho um campo com caractere acentuado, dá o seguinte erro:

Error description: Warning SQLLIB/1000 MySQL RDD: Data too long for column 'NOMFUNC' at row 1

Uso a versão FREE da SQLLIB

ECM SISTEMAS

Marciano Queiroz

Teixeira de Freitas-Ba

ecmsoft.tx@ig.com.br

FW 2.6 + xHarbour 0.99.4

Link to comment
Share on other sites

Marciano, tudo bem??

Não trabalho com xHarbour nem SQL.

Mas, como não tenho medo de falar besteira, vai lá:

Tente colocar uma MSG da vida para te mostrar o tamanho do que está sendo digitado.

Como disse, não trabalho com SQL, mas acho ilógico algo que, pelo simples fato de estar acentuado, mude o tamanho de LEN(ALLTRIM(cVar)).

A mensagem de erro indica que algum limite de tamanho foi ultrapassado.

Espero ter ajudado

Paulo Araújo

Clipper53b/FW26/Blinker70

PRESTIGIEM O III ENCONTRO DE USUÃRIOS DE FIVEWIN - 2005

Inscreva-se: http://www.installsis.com.br/encontro

Endereço: Rua José de Andrade, 508 - Centro Guarulhos - SP

Tel: (11) 6463-9000

Link to comment
Share on other sites

Desculpe-me a teimosia:

"Data too long for column 'NOMFUNC' at row 1"

Dados muito longos para coluna 'NOMFUNC' na linha 1.

Ou a mensagem de erro está certa ou é BUG. Aí...........

Paulo Araújo

Clipper53b/FW26/Blinker70

PRESTIGIEM O III ENCONTRO DE USUÃRIOS DE FIVEWIN - 2005

Inscreva-se: http://www.installsis.com.br/encontro

Endereço: Rua José de Andrade, 508 - Centro Guarulhos - SP

Tel: (11) 6463-9000

Link to comment
Share on other sites

Caro amigo Paulo, realmente, se formos analisar pela mensagem de erro, não teria dúvidas !

Mas o problema é que o SQL retorna esta mensagem para este tipo de erro, sendo que na verdade o erro não é esse!

Já constatei, o problema está na tabela de caracteres, só preciso saber como configurá-la dentro do programa para ler do Servidor MySQL.

ECM SISTEMAS

Marciano Queiroz

Teixeira de Freitas-Ba

ecmsoft.tx@ig.com.br

FW 2.6 + xHarbour 0.99.4

Link to comment
Share on other sites

Bom dia!

Por favor, envie um pequeno exemplo que demonstre o problema para suporte@sqllib.com.br, assim poderemos trabalhar em cima disto com mais rapidez. O seu banco de dados está usando qual CHARSET?

Vailton Renato

SQL LIB, MyMake & xDev Developer

MSN: renato@kssoftware.com.br

PRESTIGIEM O III ENCONTRO DE USUÃRIOS DE FIVEWIN - 2005

Link to comment
Share on other sites

//Exemplo de como estou usando para gravar um registro:

Abretabela("cadcart","",2,)

sql_cmd = "INSERT INTO cadcart (CODIGO,NOME) VALUES ('"+cCodigo+"','"+cNome+"')"

SQL EXECUTE sql_cmd

disconectar(hConexao)

// Quando a variavel cNome vai com algum caractere acentuado, dá pau !

// O Servidor MySQL esta configurado para o CHARSET "latin7"

// No utilitário MYSQL-FRONT, ele captura esta tabela de caractere e aceita acento. Quado eu mudo para "latin1", o MYSQL-FRONT tambem dá pau !

//--------------------------------------------------------------------------------------------//

Function Abretabela(cTabela,cOrder,nArea,sqL_cmdx)

Local sql_cmd

hconexao = Conectar()

if !empty(sql_cmdx)

sql_cmd=sql_cmdx

else

sql_cmd="SELECT * FROM "+cTabela+iF(!Empty(cOrder)," ORDER BY '"+cOrder+"'","")

endif

Select &nArea

USE SQL sql_cmd alias &cTabela via [mysql]

// Envieu e-mail para suporte@sqllib.com.br

ECM SISTEMAS

Marciano Queiroz

Teixeira de Freitas-Ba

ecmsoft.tx@ig.com.br

FW 2.6 + xHarbour 0.99.4

Link to comment
Share on other sites

experimente usar um ALLTRIM para retirar os BRANCOS.

e veja tambem, se voce consegue usar os COMANDOS OemToAnsi e AnsiToOem Para Tranformar a acentuação...

TERCEIRO ENCONTRO DE FIVEWINNERS NOVEMBRO DE 2005 EU APOIO E VOU.

Bad Boy - São Paulo.

kmt_karinha@pop.com.br

FW 2.3C CLIPPER 5.3B BLINKER 7.0 WORKSHOP.EXE

Editado por - kapiaba on 18/11/2005 10:26:49

Link to comment
Share on other sites

Olá, bom dia!

Veja bem, testei os comandos abaixo com o MySQL versão 5.0.15 (*ultima disponivel no site*) e tb no 4.1.x.

Eu consegui rodar o seguinte exemplo:

// Cria a variavel com o nome incluindo um caracter especial o "'"...

cNome := "João José Cristóvão 'da Cunha Pimenta"

/*

Se vc está usando SQL EXEC, deve converter os valores caracteres utilizando a função, ANY2SQL abaixo. No evento estarei falando sobre as melhorias da nova versão e como não será necessário mais isto.

*/

qout( cNome, ANY2SQL( cNome ),any2sql(date()) )

use sanven

goto 23

? recno(), lastrec(), nome

wait

replace nome with cNome

? recno(), lastrec(), nome

wait

quit

Rodou blz. Veja se estás com a DLL Client do MySQL correta. Se nao conseguir rodar os codigos em questão, posta msg pra gente ver oq mais pode ser, blz?

Vailton Renato

SQL LIB, MyMake & xDev Developer

MSN: renato@kssoftware.com.br

PRESTIGIEM O III ENCONTRO DE USUÃRIOS DE FIVEWIN - 2005

Link to comment
Share on other sites

Vailton,

Estou usando a DLL:

C:\mysql\mysql server 5.0\opt\libmysql.dll (1.412kb 22/09/2005)

Transformei a LIB:LIBMYSQL.LIB com esta DLL, e compilei.

A função ANY2SQL() não resolvel porque eu já estava usando o caracter " ' ".

Como estou usando a SQLLIB FREE não consigo usar: RREPLACE...WITH...

Tive que usar a funcao RemoverAcento() nas variaveis caractere, antes de gravar.

ECM SISTEMAS

Marciano Queiroz

Teixeira de Freitas-Ba

ecmsoft.tx@ig.com.br

FW 2.6 + xHarbour 0.99.4

Link to comment
Share on other sites

Ola Marciano, tem como postar função removeacento() pois preciso de uma função desta para imprimir ns Tdosprn()

Onde você vê um obstáculo alguém vê o término da viagem e o outro vê uma chance de crescer.

Elias Abrão Júnior

Fone : (0**11) 5181-6909 São Paulo - SP

eajunior.fw@terra.com.br

xHarbour 0.99.0 - Fivewin 2.5 e xMate

Link to comment
Share on other sites

Olá Elias

Utilize assim ou crie uma funcao p. retirar os acentos

METHOD Say(nRow, nCol, cText, lAToO) CLASS TDosPrn

DEFAULT lAToO := ::lAnsiToOem

cText := StrTran(cText,"À","a")

cText := StrTran(cText,"ã","a")

cText := StrTran(cText,"à","a")

cText := StrTran(cText,"á","a")

cText := StrTran(cText,"ª","a")

cText := StrTran(cText,"â","a")

cText := StrTran(cText,"¦","a")

cText := StrTran(cText,"è","e")

cText := StrTran(cText,"é","e")

cText := StrTran(cText,"ê","e")

cText := StrTran(cText,"ì","i")

cText := StrTran(cText,"í","i")

cText := StrTran(cText,"î","i")

cText := StrTran(cText,"ò","o")

cText := StrTran(cText,"§","o")

cText := StrTran(cText,"õ","o")

cText := StrTran(cText,"ó","o")

cText := StrTran(cText,"º","o")

cText := StrTran(cText,"ô","o")

cText := StrTran(cText,"õ","o")

cText := StrTran(cText,"ø","o")

cText := StrTran(cText,"ù","u")

cText := StrTran(cText,"ú","u")

cText := StrTran(cText,"ü","u")

cText := StrTran(cText,"û","u")

cText := StrTran(cText,"ç","c")

cText := StrTran(cText,"Ã","A")

cText := StrTran(cText,"À","A")

cText := StrTran(cText,"Ã","A")

cText := StrTran(cText,"Â","A")

cText := StrTran(cText,"È","E")

cText := StrTran(cText,"É","E")

cText := StrTran(cText,"Ê","E")

cText := StrTran(cText,"Ì","I")

cText := StrTran(cText,"Ã","I")

cText := StrTran(cText,"ÃŽ","I")

cText := StrTran(cText,"Ã’","O")

cText := StrTran(cText,"Õ","O")

cText := StrTran(cText,"Ó","O")

cText := StrTran(cText,"Ô","O")

cText := StrTran(cText,"Ù","U")

cText := StrTran(cText,"Ú","U")

cText := StrTran(cText,"Ü","U")

cText := StrTran(cText,"Û","U")

cText := StrTran(cText,"Ç","C")

cText := StrTran(cText,"«"," ")

cText := StrTran(cText,"®"," ")

cText := StrTran(cText,"ö"," ")

cText := StrTran(cText,"ü"," ")

cText := StrTran(cText,"Â"," ")

cText := StrTran(cText,"¬"," ")

cText := StrTran(cText,"¯"," ")

cText := StrTran(cText,"ý"," ")

::SetCoors(nRow, nCol)

::Write(cText, lAToO)

RETURN NIL

Um abraço

Marcelo Ferro

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...