none
Concatenar comentários RRS feed

  • Pergunta

  • Estou tentando criar um cadastro onde o funcionário adicione comentário e não consiga mais alterar, então tive a ideia de criar uma tabela que leva o código do cliente e o comentário adicionado, porém quando ele visualizar aquele cliente quero que apareça em uma textbox(multiline) com comentários adicionado para aquele cliente cada comentário em uma linha. Ex:

    10/08/2017 - Cliente comprou uma bala

    11/08/2017 - Cliente comprou um chiclete

    Alguém poderia me dar uma luz de como fazer esse concatenar?

    Obrigado.

    quinta-feira, 10 de agosto de 2017 12:48

Respostas

Todas as Respostas

  • Olá Eduardo,

    Basta ler os comentários da sua base de dados (da forma que preferir) e concatenar os comentários usando com o comando de quebra de linha ( \r\n ou a constante Environment.NewLine ). Exemplo:

    Dim ListaComentarios As New List(Of String)
    Dim stb As New StringBuilder
    
    'ler os comentários do banco com ADO.NET, Entity ou que for
    
    For Each comentario As String in ListaComentarios
    
         stb.Append(comentario & Environment.NewLine)
         ' pode ser tambem stb.AppendLine(comentario)
    
    Next
    
    txtCaixa.Text = stb.ToString()
    
    
    Importante: a caixa de texto precisa estar com o MultiLine habilitado.


    ​Rafael Esquiçato Professional Scrum Master MCP, MCTS

    quinta-feira, 10 de agosto de 2017 14:44
  • Cara muito obrigado pelo retorno.

    Estou tendo alguns problemas na leitura dos comentários:

    O que está em negrito é o que está apontando como erro.

    Dim ListaComentarios As New List(Of String)
                Dim stb As New StringBuilder
    
                From historic In CadastrotesteDataSet.historic
                Where historic.vinculo = tbcodigo.Text
                Select historic.historico
    
                For Each comentario As String In ListaComentarios
                    stb.Append(comentario & Environment.NewLine)
    
                Next
                tbhistorico = stb.ToString()

    Poderia me ajudar com esse campo, quando não uso seu código (faço uma busca simples) ele retorna apenas o último comentário daquele cliente.

    Segue os erro

    Code                             Description                 Project        Line Suppression State
    BC30002 Type 'StringBuilder' is not defined. Duas Tabelas 92 Active

    Code                     Description                Project File        Line Suppression State
    BC30454 Expression is not a method. Duas Tabelas 94 Active


    quinta-feira, 10 de agosto de 2017 16:24
  • Eduardo,

    Você precisa importar a System.Text pra usar o StringBuilder.

    Se historic.historico for uma string, você poderia usar isso:

    Dim ListaComentarios As New List(Of String) = ( From historic In CadastrotesteDataSet.historic
                Where historic.vinculo = tbcodigo.Text
                Select historic.historico ).ToList()


    ​Rafael Esquiçato Professional Scrum Master MCP, MCTS

    quinta-feira, 10 de agosto de 2017 17:40
  • Rafael,

    consegui importar o System.text como você havia comentado e refiz o código desta forma:

    Private Sub btabrir_Click(sender As Object, e As EventArgs) Handles btabrir.Click
            Dim lista = From cadastro In CadastrotesteDataSet.cadastro
                        Where cadastro.vinculo = tbcodigo.Text
                        Select cadastro.nome, cadastro.cidade, cadastro.vinculo
    
            For Each cadastro In lista
                tbnome.Text = cadastro.nome
                tbcidade.Text = cadastro.cidade
                tbcontrole.Text = cadastro.vinculo
    
                Dim ListaComentarios As New List(Of String)(From historic In CadastrotesteDataSet.historic
                                                            Where historic.vinculo = tbcodigo.Text
                                                            Select historic.historico)
                Dim stb As New StringBuilder
                For Each comentario As String In ListaComentarios
                    stb.Append(comentario & Environment.NewLine)
    
    
                Next
                tbhistorico.Text = ToString()
    
            Next


    Não deu erro nenhum mas quando eu rodei ele retornou o seguinte no campo tbhistorico

    "Duas_Tabelas.Form1, Text: Cadastro"

    Sendo que os textos que esse cliente contem são:

    "Teste Adição

    Teste Adição 2"

    Consegue me ajudar com mais esse erro?

    EDIÇÃO

    Percebi depois de postar que faltou o .ToList() depois de:

    Select historic.historico)

    mas quando coloco, ele dá um erro "End of Statement expected."



    quinta-feira, 10 de agosto de 2017 18:51
  • Eduardo,

    Acho que só faltou um

    (From historic In CadastrotesteDataSet.historic
                                                            Where historic.vinculo = tbcodigo.Text
                                                            Select historic.historico).ToList()

    Se não você vai dar um ToString na query.


    ​Rafael Esquiçato Professional Scrum Master MCP, MCTS

    quinta-feira, 10 de agosto de 2017 19:47
  • Rafael,

    Eu coloquei, mas aí o sistema aponta um erro:

    "End of Statement expected."

    no ToList()

    quinta-feira, 10 de agosto de 2017 20:12
  • Boa tarde, Eduardo Pietro. Tudo bem?

    Verifique se o seu erro, não acontece por algo semelhante a esses exemplos abaixo.

    https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/error-messages/end-of-statement-expected

    https://social.msdn.microsoft.com/Forums/en-US/e455bd11-cacf-409f-8dfc-dcc624695ac8/end-of-statement-expected-error?forum=Vsexpressvb

    Atenciosamente,


    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 11 de agosto de 2017 20:48
    Moderador
  • Bom dia,

    Por falta de retorno essa thread está sendo encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 14 de agosto de 2017 13:24
    Moderador