Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

williamjda

[Resolvido] Gravar NEGRITO, ITALICO e SUBLINHADO em SQL

Mensagens Recomendadas

williamjda

Amigos, bom dia.

Como faço para conseguir gravar em um banco de dados SQL os textos de uma RichTextBox em negrito, itálico e sublinhado.

Pois mesmo que eu coloque no FORM um código para deixar em negrito após gravar no banco e fazer o SELECT o mesmo ele aparece sem o negrito.

Preciso que ele preserve as alterações dos textos em questão. Alguém sabe por onde devo começar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Uma RichTextBox, como o nome bem indica, é uma camada de apresentação interpretada do formato RTF.

A propriedade Text devolve apenas a representação do texto no campo, mas se queres manter o formato RTF deves guardar o código RTF.

Armazena na base de dados o que está na propriedade Rtf e não na Text

https://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.rtf(v=vs.110).aspx


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
williamjda

Boa tarde.

Eu vi o link que me sugeriste e até acho que entendi o que tenho que fazer. Porem não funcionou ou fiz algo errado. kkkk

Bom conforme diz no link.

Declarei em meu form.

Public Property Rtf As String

E no INSERT indiquei que o campo txtdescricao.text seja txtdescricao.RTF como campo a ser inserido no banco.

Quando faço o insert o datagrid mostra a seguinte formatação gravada no banco:

DESCRIÇÃO DO DOCUMENTO

------------------------------------------------------------------------------------------------

{\rtf1\fbidis\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fnil\fcharset178 Arial;}}

\viewkind4\uc1\pard\rtlpar\qr\b\fs18 TESTE DE GRAVAÇÃO DE REGISTRO\b0\f1\rtlch\par

}

Ao abrir o form. O texto que era apenas: TESTE DE GRAVAÇÃO DE REGISTRO se torna nos caracteres acima informado.

Lembrando que a propriedade do campo na tabela está como TEXT.

Alguém sabe o que ocorre?

Att;

William

Editado por williamjda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
williamjda

Bom eu estava a carregar errado no select para visualizar o texto gravado no banco.

Bom entendi como faço para poder guardar as propriedades do texto no banco. Então deixarei o código abaixo para os próximos leitores deste tópico.

No form do editor fiz a declaração abaixo:

Public Property Rtf As String

No INSERT para gravar no banco alterei a propriedade .TEXT do RichTextBox para . RTF.


'FECHA A CONEXÃO COM O BANCO
	ConectionBD.Close()

	Try

	   'CHECA A CONECTION STRING PARA GRAVAR OS DADOS NO BANCO DE DADOS
		Dim cmd As SqlCommand = ConectionBD.CreateCommand

		'QUERY PARA GRAVAR NO BANCO DE DADOS
		Using com As New SqlCommand("INSERT INTO Cadastro_Modelo_Documento (descricao) values (@descricao)", ConectionBD)

		 com.Parameters.AddWithValue("@descricao", Cadastro_Modelo_Documento_Editor.txtdescricao.Rtf)

			ConectionBD.Open()
			com.ExecuteNonQuery()

			'FECHA A CONEXÃO COM O BANCO DE DADOS
			ConectionBD.Close()

			'RETORNA O MENSAGE DE OK APOS GRAVAR NO BANCO
			MsgBox("Registro efetuado com sucesso.", MsgBoxStyle.Information, "ATENÇÃO !!!")

		End Using

	Catch ex As Exception
		'EM CASO DE ERRO NA GRAVAÇÃO DO REGISTRO O SISTEMA RETORNA UMA MENSAGEM DE ERRO.
		MsgBox(ex.Message, MsgBoxStyle.Exclamation, "INSERT_Cadastro_Modelo_Documento_Novo")

		'FECHA A CONEXÃO COM O BANCO DE DADOS
		ConectionBD.Close()
	End Try

Com isso ele grava no banco de dados preservando a propriedade da formatação do texto. E para carregar no form com a propriedade gravado fiz o select abaixo.

OBS: O detalhe está na propriedade do do RichTextBox. Basta alterar a propriedade .TEXT para .RFT. Para receber a consulta com a formação gravada.

  'FECHA A CONEXÃO COM O BANCO DE DADOS
	ConectionBD.Close()

	Try

		'STRING DE CONSULTA DE NO BANCO DE DADOS
		Dim cmd As New SqlCommand("SELECT descricao" _
		 & " FROM Cadastro_Modelo_Documento" _
		 & " WHERE iddocumento = '" & Cadastro_Modelo_Documento.DataGrid_Dados.CurrentRow.Cells(0).Value & "'", ConectionBD)

		'ABRE A CONEXÃO COM O BANCO DE DADOS
		ConectionBD.Open()

		'CARREGA OS DADOS E JOGA NO DATA READER
		Dim DadosCadastro As SqlDataReader = cmd.ExecuteReader()

		If (DadosCadastro.Read() = True) Then
			'RECEBE OS DADOS DA CONSULTA
			Cadastro_Modelo_Documento_Editor.txtdescricao.Rtf = DadosCadastro.Item(1).ToString

			'FECHA A CONEXÃO COM O BANCO DE DADOS
			ConectionBD.Close()
		End If

	Catch ex As Exception
		'EM CASO DE ERRO O SISTEMA RETORNA A MENSAGEM
		MsgBox(ex.Message, MsgBoxStyle.Exclamation, "SELECT_Cadastro_Modelo_Documento_Ver")

		'FECHA A CONEXÃO COM O BANCO DE DADOS
		ConectionBD.Close()
	End Try

Obrigado Ribeiro55. Apredendo e compartilhando.

Editado por williamjda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55
Armazena na base de dados o que está na propriedade Rtf e não na Text

Não era para criares propriedades. Era para usares as que já existem do objecto :)

O link remete para a documentação da propriedade Rtf do objecto RichTextBox


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.