GRAVAR RICHTEXTBOX EM MYSQL
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
obrigado
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.
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.
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ê
no aguardo Marcelo, obrigado
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:
para ler
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
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
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
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
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
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
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.
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.
PS no meu caso o colation é utf8_general_ci
Tópico encerrado , respostas não são mais permitidas