Skip to content

Problemas ao tentar gravar um campo grande usando o rdwclientsql

Mobius One edited this page Sep 19, 2022 · 2 revisions

Home > Problemas Resolvidos > Problemas ao tentar gravar campo grande

Problema

Valor de precisão inválido ao tentar gravar um XML grande no SqlServer com campo Text e RDWClientSQL

Tentando gravar um XML com ele verifiquei que se o arquivo tiver menos de 8000 mil caracteres ele grava
Se tiver mais de 8000 ele dá um retorno de valor de precisão inválido

Solução

Ao tentar passar os parâmetros para o texto sql usado no componente estava usando como: dm.sqlTemp3.ParamByName('XML').Assign(Memo1.Lines) pois estou carregando o XML em um Memo e assim tive o retorno passado no título.

Também foi tentado com:

dm.sqlTemp3.ParamByName('XML').AsString := Memo1.Text
dm.sqlTemp3.ParamByName('XML').AsMemo := Memo1.Text

E em todas as situações XML com mais de 8000 caracteres não salvava, apenas os menores.

Agora deixo a solução para gravar corretamente no banco:

vXML := TStringStream.Create(Memo1.Text);
dm.sqlTemp3.ParamByName('XML').LoadFromStream(vXML,ftMemo);
FreeAndNil(vXML);

Transformei o conteúdo do Memo em um Stream e passei para o RDWClientSQL usando o LoadFromStream com o tipo ftMemo.

Clone this wiki locally