Fórum erro com ADO e Sql Server no delphi... #365573
28/10/2008
0
Estou com o seguinte comando:
INSERT INTO sal.RemessaA (CodRegistroHeader, IdentificacaoArqRemessa, ExtensoIdentificacao,TipoServico, ExtensoTipoServico, ContaCorrente, ExtensoNomeEmpresa)
VALUES(:_CodRegistroHeader, :_IdentificacaoArqRemessa, :_ExtensoIdentificacao, :_TipoServico, :_ExtensoTipoServico, :_ContaCorrente, :_ExtensoNomeEmpresa)´);
Parameters.ParamByName(´_CodRegistroHeader´).Value := 0;
Parameters.ParamByName(´_IdentificacaoArqRemessa´).Value := 1;
Parameters.ParamByName(´_ExtensoIdentificacao´).Value := ´REMESSA´;
Parameters.ParamByName(´_TipoServico´).Value := 1;
Parameters.ParamByName(´_ExtensoTipoServico´).Value:= ´COBRANCA´;
Parameters.ParamByName(´_ContaCorrente´).Value := qryCC.FieldByName(´ContaCorrente´).AsFloat;
Parameters.ParamByName(´_ExtensoNomeEmpresa´).Value := qryCC.FieldByName(´Titular´).AsString;
ExecSql;
Componentes ADO, conexão com SqlServer
O erro é só na linha do parâmetro ´_ExtensoNomeEmpresa´
em modo de execução na aplicação.
se eu substituir o Field ´Titular´ por
1- Um valor de teste do tipo: ´Teste´
2- Um outro campo: qryCC.FieldByName(´cpf2´).AsString;
Ele dá certo a execução;
Só com a linha de comando ´qryCC.FieldByName(´Titular´).AsString´
que dá o erro abaixo:
...EOleException with message ´Dados de cadeia ou binários seriam truncados´.
O que pode ser ?
Thiagopedro
Curtir tópico
+ 0Posts
28/10/2008
Emerson Nascimento
Gostei + 0
29/10/2008
Juniorvieira
Gostei + 0
05/11/2008
Marciodossantosprog
Uma forma de você deixar de ter este tipo de erro e, evitar ter de lembrar o tempo todo de que o campo x da tabela Y tem de ter o tamanho XX e, no meio do seu código ficar tratando a informação com LeftStr, RightStr, Copy e etc... seria realizar este tratamento em seu script.
Ao invés de:
´
INSERT INTO sal.RemessaA (CodRegistroHeader, IdentificacaoArqRemessa, ExtensoIdentificacao,TipoServico, ExtensoTipoServico, ContaCorrente, ExtensoNomeEmpresa)
VALUES(:_CodRegistroHeader, :_IdentificacaoArqRemessa, :_ExtensoIdentificacao, :_TipoServico, :_ExtensoTipoServico, :_ContaCorrente, :_ExtensoNomeEmpresa)´);
´
Usar:
´
INSERT INTO sal.RemessaA (
CodRegistroHeader,
IdentificacaoArqRemessa,
ExtensoIdentificacao)
VALUES(
Convert(Int, :_CodRegistroHeader),
Convert(Int, :_IdentificacaoArqRemessa),
Convert(VarChar(15), :_ExtensoIdentificacao)
)
´
Tratando, internamente os parâmetros você reduz o código e garante que não terá problemas na persistência dos dados.
Espero ter contribuído.
Abraços
Gostei + 0
05/11/2008
Juniorvieira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)