ME AJUDEM (Delphi 7)
12/04/2023
0
preciso usar um Memo para escrever solicitações, como se fosse um bloco de notas ou um campo para reclamações do atendimento, etc...e preciso que, ao clicar em um BitBtn, ele insira as informações do Memo na minha tabela no banco de dados.
da um help pf.
Lucas Dourado
Posts
12/04/2023
Arthur Heinrich
Neste caso, você terá que utilizar colunas do tipo LOB (Large Object). Devido à natureza de texto da informação, o uso de uma coluna do tipo CLOB (Character LOB) é o indicado. Vai depender do tipo de banco que você está utilizando.
Eu já implementei algumas aplicações que tem esta característica e, no meu caso, não encontrei uma forma de fazer o insert do LOB diretamente.
O que fiz foi fazer o insert apenas com as outras colunas e, depois, executo um update do registro salvando o conteúdo do lob.
Escrevi uma rotina assim:
procedure UpdateCLOBColumn(Table, Column, WhereClause, Value : String); var Q : TQuery; begin ParamCheck:=True; Q:=CreateSQL( ['update '+Table+' set', ' '+Column+' = :'+Column, 'where', ' '+WhereClause]); ParamCheck:=False; Q.ParamByName(Column).Value:=Value; Q.ExecSQL; Q.Free; end;
Chamo a rotina após o insert:
UpdateCLOBColumn('tabela', 'coluna_clob', 'coluna_pk = '+QuotedStr(IDReg), StringReplace(M.SelText,#13,'',[rfReplaceAll]));
No meu caso, utilizei M.SelText para salvar apenas a parte selecionada do texto, mas poderia ser M.Text.
Executei um StringReplace para remover os caracteres "ENTER" (#13).
No banco, a quebra de linha geralmente utiliza apenas o Line Feed (#10) e não uma combinação de Cariage Return + Line Feed (CR+LF = #13#10).
12/04/2023
Arthur Heinrich
Neste caso, você terá que utilizar colunas do tipo LOB (Large Object). Devido à natureza de texto da informação, o uso de uma coluna do tipo CLOB (Character LOB) é o indicado. Vai depender do tipo de banco que você está utilizando.
Eu já implementei algumas aplicações que tem esta característica e, no meu caso, não encontrei uma forma de fazer o insert do LOB diretamente.
O que fiz foi fazer o insert apenas com as outras colunas e, depois, executo um update do registro salvando o conteúdo do lob.
Escrevi uma rotina assim:
procedure UpdateCLOBColumn(Table, Column, WhereClause, Value : String); var Q : TQuery; begin ParamCheck:=True; Q:=CreateSQL( ['update '+Table+' set', ' '+Column+' = :'+Column, 'where', ' '+WhereClause]); ParamCheck:=False; Q.ParamByName(Column).Value:=Value; Q.ExecSQL; Q.Free; end;
Chamo a rotina após o insert:
UpdateCLOBColumn('tabela', 'coluna_clob', 'coluna_pk = '+QuotedStr(IDReg), StringReplace(M.SelText,#13,'',[rfReplaceAll]));
No meu caso, utilizei M.SelText para salvar apenas a parte selecionada do texto, mas poderia ser M.Text.
Executei um StringReplace para remover os caracteres "ENTER" (#13).
No banco, a quebra de linha geralmente utiliza apenas o Line Feed (#10) e não uma combinação de Cariage Return + Line Feed (CR+LF = #13#10).
Minha função CreateSQL nada mais é do que um acelerador.
Ela apenas instancia a classe TQuery, atribui parâmetro Database e seta algumas propriedades, e adiciona a query.
Acredito que seja fácil adaptar a rotina acima.
14/04/2023
Emerson Nascimento
Clique aqui para fazer login e interagir na Comunidade :)