GRAVAR RICHTEXTBOX EM MYSQL

SERGIOPASCOAL 04/04/2014 15:41:11
#436910
Olá galera, deparei com um problema, estou tentando gravar um texto feito em RichTextBox (com formato de fonte, cor, negrito, etc) no banco mySQL mas não vai nem a pau, quando puxa vem todo distorcido, alguém já gravou um campo desse?
obrigado
CLEVERTON 05/04/2014 19:09:46
#436937
Cara, uma dica:

esse problema de vir distorcido está relacionado a codificação de caracteres especiais escolhida na instalação do banco de dados. o

O ideal seria gravar o arquivo RTF no disco e salvar somente o Caminho/Path do arquivo RTF no Banco de dados ?

vc iria diminuir uns trocentos problemas.
MARCELO.TREZE 05/04/2014 20:23:19
#436941
Resposta escolhida
Sergio e consegui fazer salvando o texto em um campo e o rtf em outro, porém tem ainda um truquezinho, bom na segunda posto o código pra você
SERGIOPASCOAL 07/04/2014 06:22:21
#436960
no aguardo Marcelo, obrigado
MARCELO.TREZE 07/04/2014 08:34:02
#436961
Conforme prometido Sergio,

Eu criei dois campos no banco Mysql, os dois são do tipo longtext, no meu caso coloquei o nome destes campos de historico, e historicortf.

pra salvar você deverá salvar assim:

sql = [Ô]insert into tabela (historico, historicortf) values ([ô][Ô] & richtextbox1.Text & [Ô][ô],[ô][Ô] &  Replace(richtextbox1.TextRTF, [Ô]\[Ô], [Ô]£[Ô]) & [Ô][ô])[Ô]


para ler

sql = [Ô]Select * from tabela where id=[ô]1[ô][Ô]
Set RS = CNN.Execute(sql)
richtextbox1.text = RS!historico
richtextbox1.textRTF = Replace(rs!historicortf, [Ô]£[Ô], [Ô]\[Ô])


porque deste replace:

No mysql acontece o seguinte, em uma string, certas sequências tem um significado especial. Cada uma destas sequências começam com uma barra invertida (‘\’), conhecida como caracter de escape.

vja mais no link http://vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=436877&pagina=1#.U0KLcqhdWls

então se você salvar o rtf com as barras invertidas as mesmas irão sumir, o que ocasionará a leitura do rtf de forma errada.

outra coisa, antes que isso seja discutido aqui, não é possível saber onde estas barras estarão ao se gerar o rtf, então concatenar strings não será possível, sendo obrigatório o uso do replace.

boa sorte


SERGIOPASCOAL 07/04/2014 16:56:11
#436987
Obrigado Marcelo, que buxa meu amigo, grava certinho no banco de dados, consultando via phpmyadmin ele está lá gravado, mas na hora de retornar ele diz invalid use of null
mas fiz a verificação
if isnull(rs!historicortf) = false then
richtextbox1.textRTF = Replace(rs!historicortf, [Ô]£[Ô], [Ô]\[Ô])
end if

estranho que ele passa pela condição e aparece o erro...
formato do campo: longtext latin1_general_ci

tem idéia do que pode ser? obrigado
SERGIOPASCOAL 07/04/2014 17:00:28
#436988
Marcelo mudando o campo de longtext para varchar funciona
mas o problema é definir o tamanho desse campo, pois não sei o limite que será digitado, como fazer?
Obrigado

Esqueci de dizer que fiz mais um replace:
Replace(Replace(richtextbox1.TextRTF, [Ô]\[Ô], [Ô]£[Ô]), vbCrLf, [Ô][Ô])

Obrigado
MARCELO.TREZE 07/04/2014 17:13:14
#436989
então na duvida eu uso sempre o maior campo, no caso eu usei o long text, veja a diferença:

tipo campo min max
VARCHAR 1 255 CARACTERES
TEXT 0 65535 (2^16 – 1) caracteres
LONGTEXT 0 4294967295 (2^32 – 1) caracteres

Viu que diferença, então tenha em mente o seguinte, se o texto digitado for maior que 255 caracteres então varchar não é o ideal.

no caso do outro replace que você colocou, foi pra tirar a mudança de linha, eu ja não fiz isto, preferi manter os paragrafos.


MARCELO.TREZE 07/04/2014 17:17:05
#436990
PS no meu caso o colation é utf8_general_ci
Tópico encerrado , respostas não são mais permitidas