Ir para conteúdo
  • Cadastre-se

dev botao

FDQUERY - Append e Post no Delphi 10.4


Ver Solução Respondido por fdsilva.desenv,
  • Este tópico foi criado há 1078 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

Prezados, bom dia.

Utilizo o Delphi 10.4 e banco de dados Firebird 4.0 para uma determinada aplicação.

Acontece que estou enfrentando um erro quando tento utilizar um FDQUERY para incluir campos em uma tabela.

 

Aparece o erro : '' is invalid floating point value. Após o processo de post. 

A princípio, pensei, em algum campo da minha tabela que é double precision ou numeric estar passando vazio, mas mesmo incluindo esses campos no código recebendo 0 ou qualquer valor, o erro persiste.

 

Abaixo o código:
 

      if QryPedidos.RecordCount = 0 then
        QryPedidos.Append
      else
        QryPedidos.Edit;

      QryPedidos.FieldByName('ID').AsInteger    := BuscaNovoPedido;
      QryPedidos.FieldByName('ID_VENDEDOR').AsInteger   := QryConfig.FieldByName('ID_VENDEDOR_PADRAO').AsInteger;
      QryPedidos.FieldByName('ID_CLASSIFICACAO').AsInteger := QryConfig.FieldByName('ID_CLASSIFICACAO_PADRAO').AsInteger;
      QryPedidos.FieldByName('IDEMPRESA').AsInteger     := sIDEmpresa;
      QryPedidos.FieldByName('ID_FORMAPAG').AsInteger   := QryFormaPag.FieldByName('ID').AsInteger;

      QryPedidos.FieldByName('COO').AsInteger           := DmTabelas.PAFECF.gCOO;
      QryPedidos.FieldByName('CCF').AsInteger           := DmTabelas.PAFECF.gCCF;
      QryPedidos.FieldByName('GNF').AsInteger           := DmTabelas.PAFECF.gGNF;
      QryPedidos.FieldByName('CAIXA').AsString          := DmTabelas.PAFECF.gCaixa;
      QryPedidos.FieldByName('NUMSERIEECF').AsString    := '';
      QryPedidos.FieldByName('DATA_ENTREGA').AsDateTime := now;
      QryPedidos.FieldByName('HORA_ENTREGA').AsDateTime := now;
      QryPedidos.FieldByName('DAV').AsString            := 'S';
      if not pDAV then
        QryPedidos.FieldByName('DAV').AsString := 'N';
      // preenche dados do cliente
      if DmClientes.Dados_Contato(ClienteCupom.ID) then
      begin
        QryPedidos.FieldByName('ID_CLIENTE').AsInteger      := ClienteCupom.ID;
        QryPedidos.FieldByName('CLIENTE').AsStringTrim     := ClienteCupom.Cliente;
        QryPedidos.FieldByName('END_ENTREGA').AsStringTrim := ClienteCupom.Endereco;
        QryPedidos.FieldByName('NUM_END_ENTREGA').AsStringTrim := ClienteCupom.Numero;
        QryPedidos.FieldByName('COMPL_END_ENTREGA').AsStringTrim := ClienteCupom.Complemento;
        QryPedidos.FieldByName('BAIRRO_END_ENTREGA').AsStringTrim := ClienteCupom.Bairro;
        QryPedidos.FieldByName('CID_END_ENTREGA').AsStringTrim := ClienteCupom.Cidade;
        QryPedidos.FieldByName('UF_END_ENTREGA').AsString := ClienteCupom.UF;
        QryPedidos.FieldByName('CEP_END_ENTREGA').AsStringTrim := ClienteCupom.Cep;
        QryPedidos.FieldByName('CNPJCPF').AsStringTrim := ClienteCupom.CPF;
        QryPedidos.FieldByName('INSCEST').AsStringTrim    := ClienteCupom.Identidade;
        QryPedidos.FieldByName('PLACA_VEIC').AsStringTrim := ClienteCupom.Placa;
        QryPedidos.FieldByName('ODOMETRO').AsStringTrim   := ClienteCupom.Odometro;
      end;

      QryPedidos.FieldByName('VALOR').AsExtended := 0;//formatfloat('#,##0.00',0);
      QryPedidos.FieldByName('DESCONTO').AsExtended := 0;
      QryPedidos.FieldByName('ACRESCIMO').AsExtended := 0;
      QryPedidos.FieldByName('OUTRAS_DESPESAS').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_TOTAL').AsExtended := 0;

      QryPedidos.FieldByName('VALOR_REAL').AsExtended := 0;
      QryPedidos.FieldByName('MARGEM_VENDA').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_COMISSAO').AsExtended := 0;
      QryPedidos.FieldByName('TOTAL_GERAL').AsExtended := 0;
      
      QryPedidos.Post;

Todos os campos acima estão criados no FieldEditors também.

 

Não sei mais o que fazer !!!! Se alguém tiver alguma ideia do que posso fazer, de repente uam propriedade no componente que posso mudar, ou algo no código que preciso implementar, eu agradeço.

Editado por fdsilva.desenv
Postado

Desculpe, não entendi.

 

Antes disso eu coloco:

      QryPedidos.Close;
      QryPedidos.SQL.Clear;
      QryPedidos.sql.add('select * from pedido');
      QryPedidos.Open;

 

Mas eu quero colocar um novo item nesse pedido, não é Append e no final Post ?
De qualquer forma, colocando Append ou Edit, ao final, quando dou um POST, dá o erro acima.

Postado

Fiz a query colocando todos os campos da tabela, mas os ultimos 5 campos (iniciando pelo campo VFCP_W04H) são do tipo BCD, se eu coloco como Double Precision ele dá o erro dizendo que o campo é BCD mas tá esperando Float, se mudo pra numeric, dá o mesmo erro dizendo que o campo é BCd e tá esperando integer.

 

Como tratar campos do tipo BCD na query ?

      QryPedidos.Close;
      QryPedidos.SQL.Clear;
      QryPedidos.sql.add('select ID,ID_VENDEDOR,ID_CLASSIFICACAO,IDEMPRESA,ID_FORMAPAG,');
      QryPedidos.sql.add('COO,CCF,GNF,CAIXA,NUMSERIEECF,DATA_ENTREGA ,HORA_ENTREGA,');
      QryPedidos.sql.add('DAV,ID_CLIENTE,CLIENTE,END_ENTREGA,NUM_END_ENTREGA,COMPL_END_ENTREGA,');
      QryPedidos.sql.add('BAIRRO_END_ENTREGA,CID_END_ENTREGA,UF_END_ENTREGA,CEP_END_ENTREGA,');
      QryPedidos.sql.add('CNPJCPF,INSCEST,PLACA_VEIC,ODOMETRO,');
      QryPedidos.sql.add('PEDIDO_NUM,DATA_PEDIDO,HORA_PEDIDO,CONFIRMADA,ENTREGUE,CANCELADO,' +
                         'TIPODOC,TIPO_PEDIDO,DAV_IMPRESSO,NATOP,MD5REGISTRO,NUMPV,'+
                         'CER,ABASTECIMENTO,ID_MESA,STATUS_ABASTEC,CHAVE_NFE,STATUS_NFE,PROTOCOLO_NFE,'+
                         'RECIBO_NFE,DEVOLUCAO,NUMERO_DOC,SINCRONIZADO,IDUSUARIOCANC,NUMDAV,TIPO_FRETE,IDPLANOCONTAS,'+
                         'IDCENTROCUSTO,NFE_TIPOEMISS,NUM_LOTE,NAUTORIZA_VIDALINK,ARQUIVO_XML,NOTAMANUAL,'+
                         'COO_CONF_MESA,MODELO,DATA_AUTORIZA,HORA_AUTORIZA,NRAUTORIZA_FARMAPOP,NAUTORIZA_FUNCIONAL,'+
                         'VEN_PBM,COD_PBM,OBSNFE_1,OBSNFE_2,OBSNFE_3,OBSNFE_4,CODIGOSEFAZ,NUMEROSESSAO,STATUS_CANCEL_NFCE,'+
                         'PROTOCOLO_CANCEL_NFCE,DH_CANCEL_NFCE,VINCULADO_PBM_FARMAPOP,VINCULADO_PBM_PORTAL,VINCULADO_PBM_FUNCIONAL,'+
                         'VINCULADO_PBM_VIDALINK,VINCULADO_PBM_EPHARMA,NRAUTORIZA_PORTAL,SERIE_B07,AJUSTE_NFCE_MANUAL,NUM_TENTATIVA_ENVIO,OBSERVACAO,');
      QryPedidos.SQL.Add('cast(VALOR as double precision) as VALOR,');
      QryPedidos.SQL.Add('cast(DESCONTO as double precision) as DESCONTO,');
      QryPedidos.SQL.Add('cast(ACRESCIMO as double precision) as ACRESCIMO,');
      QryPedidos.SQL.Add('cast(OUTRAS_DESPESAS as double precision) as OUTRAS_DESPESAS,');
      QryPedidos.SQL.Add('cast(VALOR_TOTAL as double precision) as VALOR_TOTAL,');
      QryPedidos.SQL.Add('cast(VALOR_REAL as double precision) as VALOR_REAL,');
      QryPedidos.SQL.Add('cast(MARGEM_VENDA as double precision) as MARGEM_VENDA,');
      QryPedidos.SQL.Add('cast(VALOR_COMISSAO as double precision) as VALOR_COMISSAO,');
      QryPedidos.SQL.Add('cast(TOTAL_GERAL as double precision) as TOTAL_GERAL,');
      QryPedidos.SQL.Add('cast(VALOR_TROCO as double precision) as VALOR_TROCO,');
      QryPedidos.SQL.Add('cast(ALIQ_ICMS as double precision) as ALIQ_ICMS,');
      QryPedidos.SQL.Add('cast(BASE_ICMS as double precision) as BASE_ICMS,');
      QryPedidos.SQL.Add('cast(VALOR_ICMS as double precision) as VALOR_ICMS,');
      QryPedidos.SQL.Add('cast(ALIQ_ICMS_ST as double precision) as ALIQ_ICMS_ST,');
      QryPedidos.SQL.Add('cast(BASE_ICMS_ST as double precision) as BASE_ICMS_ST,');
      QryPedidos.SQL.Add('cast(VALOR_ICMS_ST as double precision) as VALOR_ICMS_ST,');
      QryPedidos.SQL.Add('cast(VALOR_PIS as double precision) as VALOR_PIS,');
      QryPedidos.SQL.Add('cast(VALOR_COFINS as double precision) as VALOR_COFINS,');
      QryPedidos.SQL.Add('cast(VALOR_IPI as double precision) as VALOR_IPI,');
      QryPedidos.SQL.Add('cast(VALOR_CARGA_TRIB as double precision) as VALOR_CARGA_TRIB,');
      QryPedidos.SQL.Add('cast(VALOR_FRETE as double precision) as VALOR_FRETE,');
      QryPedidos.SQL.Add('cast(VALOR_SEGURO as double precision) as VALOR_SEGURO,');
      QryPedidos.SQL.Add('cast(VALOR_OUTROS as double precision) as VALOR_OUTROS,');
      QryPedidos.SQL.Add('cast(BASE_ISS as double precision) as BASE_ISS,');
      QryPedidos.SQL.Add('cast(VALOR_ISS as double precision) as VALOR_ISS,');
      QryPedidos.SQL.Add('cast(BASE_PIS as double precision) as BASE_PIS,');
      QryPedidos.SQL.Add('cast(BASE_COFINS as double precision) as BASE_COFINS,');
      QryPedidos.SQL.Add('cast(BASE_IPI as double precision) as BASE_IPI,');
      QryPedidos.SQL.Add('cast(VAL_CARGA_FED as double precision) as VAL_CARGA_FED,');
      QryPedidos.SQL.Add('cast(VAL_CARGA_EST as double precision) as VAL_CARGA_EST,');
      QryPedidos.SQL.Add('cast(VAL_CARGA_MUN as double precision) as VAL_CARGA_MUN,');
      QryPedidos.SQL.Add('cast(DESCONTO_PROD as double precision) as DESCONTO_PROD,');
      QryPedidos.SQL.Add('cast(VFCP_W04H as double precision) as VFCP_W04H,');
      QryPedidos.SQL.Add('cast(VFCPST_W06A as double precision) as VFCPST_W06A,');
      QryPedidos.SQL.Add('cast(VFCPSTRET_W06B as double precision) as VFCPSTRET_W06B,');
      QryPedidos.SQL.Add('cast(VIPIDEVOL_W12A as double precision) as VIPIDEVOL_W12A,');
      QryPedidos.SQL.Add('cast(VALOR_SUBTOTAL as double precision) as VALOR_SUBTOTAL');

 

Postado

Resolvi o lance do BCD, colocando numeric(15,2) nos campos.

Mas mesmo assim, o erro persiste : ' ' is invalid floating point value. Após o processo de post. 

function TDmTabelas.IncluirCupomExecute(var Mensagem: String; pDAV: Boolean; pPV: Boolean = False): Boolean;
var
  aMensagem : String;
  aEstadoECF: TACBrECFEstado;
  aOK       : Boolean;

  function BuscaNovoPedido : integer;
  begin
    with FControllerConexao.QueryFD.FDQuerySQL do
    begin
      Close;
      SQL.Clear;
      SQL.CommaText := '';
      SQL.Add(' select max(id) idmax from pedido      ');
      Open;

      Result := FieldByName('idmax').AsInteger + 1;
    end;
  end;
begin

  Result := True;
  aOK    := False;
  if (pDAV) or (pPV) or (QryPedidos.RecordCount = 0) or
  (QryPedidos.FieldByName('ID_MESA').AsInteger > 0) or
  (QryPedidos.FieldByName('ABASTECIMENTO').AsString = 'S') then
  begin
    PAFECF.CapturaContadoresECF;
    aOK := True;
    //
    if aOK then
    begin
      // abre tabela de classificação
      PAFECF.CapturaContadoresECF;
      DmTabelas.Dados_PedidoClassificacao(0, QryConfig.FieldByName('ID_CLASSIFICACAO_PADRAO').AsInteger);

      QryPedidos.Close;
      QryPedidos.SQL.Clear;
      QryPedidos.sql.add('select ID,ID_VENDEDOR,ID_CLASSIFICACAO,IDEMPRESA,ID_FORMAPAG,');
      QryPedidos.sql.add('COO,CCF,GNF,CAIXA,NUMSERIEECF,DATA_ENTREGA ,HORA_ENTREGA,');
      QryPedidos.sql.add('DAV,ID_CLIENTE,CLIENTE,END_ENTREGA,NUM_END_ENTREGA,COMPL_END_ENTREGA,');
      QryPedidos.sql.add('BAIRRO_END_ENTREGA,CID_END_ENTREGA,UF_END_ENTREGA,CEP_END_ENTREGA,');
      QryPedidos.sql.add('CNPJCPF,INSCEST,PLACA_VEIC,ODOMETRO,');
      QryPedidos.sql.add('PEDIDO_NUM,DATA_PEDIDO,HORA_PEDIDO,CONFIRMADA,ENTREGUE,CANCELADO,' +
                         'TIPODOC,TIPO_PEDIDO,DAV_IMPRESSO,NATOP,MD5REGISTRO,NUMPV,'+
                         'CER,ABASTECIMENTO,ID_MESA,STATUS_ABASTEC,CHAVE_NFE,STATUS_NFE,PROTOCOLO_NFE,'+
                         'RECIBO_NFE,DEVOLUCAO,NUMERO_DOC,SINCRONIZADO,IDUSUARIOCANC,NUMDAV,TIPO_FRETE,IDPLANOCONTAS,'+
                         'IDCENTROCUSTO,NFE_TIPOEMISS,NUM_LOTE,NAUTORIZA_VIDALINK,ARQUIVO_XML,NOTAMANUAL,'+
                         'COO_CONF_MESA,MODELO,DATA_AUTORIZA,HORA_AUTORIZA,NRAUTORIZA_FARMAPOP,NAUTORIZA_FUNCIONAL,'+
                         'VEN_PBM,COD_PBM,OBSNFE_1,OBSNFE_2,OBSNFE_3,OBSNFE_4,CODIGOSEFAZ,NUMEROSESSAO,STATUS_CANCEL_NFCE,'+
                         'PROTOCOLO_CANCEL_NFCE,DH_CANCEL_NFCE,VINCULADO_PBM_FARMAPOP,VINCULADO_PBM_PORTAL,VINCULADO_PBM_FUNCIONAL,'+
                         'VINCULADO_PBM_VIDALINK,VINCULADO_PBM_EPHARMA,NRAUTORIZA_PORTAL,SERIE_B07,AJUSTE_NFCE_MANUAL,NUM_TENTATIVA_ENVIO,OBSERVACAO,');
      QryPedidos.SQL.Add('cast(VALOR as double precision) as VALOR,');
      QryPedidos.SQL.Add('cast(DESCONTO as double precision) as DESCONTO,');
      QryPedidos.SQL.Add('cast(ACRESCIMO as double precision) as ACRESCIMO,');
      QryPedidos.SQL.Add('cast(OUTRAS_DESPESAS as double precision) as OUTRAS_DESPESAS,');
      QryPedidos.SQL.Add('cast(VALOR_TOTAL as double precision) as VALOR_TOTAL,');
      QryPedidos.SQL.Add('cast(VALOR_REAL as double precision) as VALOR_REAL,');
      QryPedidos.SQL.Add('cast(MARGEM_VENDA as double precision) as MARGEM_VENDA,');
      QryPedidos.SQL.Add('cast(VALOR_COMISSAO as double precision) as VALOR_COMISSAO,');
      QryPedidos.SQL.Add('cast(TOTAL_GERAL as double precision) as TOTAL_GERAL,');
      QryPedidos.SQL.Add('cast(VALOR_TROCO as double precision) as VALOR_TROCO,');
      QryPedidos.SQL.Add('cast(ALIQ_ICMS as double precision) as ALIQ_ICMS,');
      QryPedidos.SQL.Add('cast(BASE_ICMS as double precision) as BASE_ICMS,');
      QryPedidos.SQL.Add('cast(VALOR_ICMS as double precision) as VALOR_ICMS,');
      QryPedidos.SQL.Add('cast(ALIQ_ICMS_ST as double precision) as ALIQ_ICMS_ST,');
      QryPedidos.SQL.Add('cast(BASE_ICMS_ST as double precision) as BASE_ICMS_ST,');
      QryPedidos.SQL.Add('cast(VALOR_ICMS_ST as double precision) as VALOR_ICMS_ST,');
      QryPedidos.SQL.Add('cast(VALOR_PIS as double precision) as VALOR_PIS,');
      QryPedidos.SQL.Add('cast(VALOR_COFINS as double precision) as VALOR_COFINS,');
      QryPedidos.SQL.Add('cast(VALOR_IPI as double precision) as VALOR_IPI,');
      QryPedidos.SQL.Add('cast(VALOR_CARGA_TRIB as double precision) as VALOR_CARGA_TRIB,');
      QryPedidos.SQL.Add('cast(VALOR_FRETE as double precision) as VALOR_FRETE,');
      QryPedidos.SQL.Add('cast(VALOR_SEGURO as double precision) as VALOR_SEGURO,');
      QryPedidos.SQL.Add('cast(VALOR_OUTROS as double precision) as VALOR_OUTROS,');
      QryPedidos.SQL.Add('cast(BASE_ISS as double precision) as BASE_ISS,');
      QryPedidos.SQL.Add('cast(VALOR_ISS as double precision) as VALOR_ISS,');
      QryPedidos.SQL.Add('cast(BASE_PIS as double precision) as BASE_PIS,');
      QryPedidos.SQL.Add('cast(BASE_COFINS as double precision) as BASE_COFINS,');
      QryPedidos.SQL.Add('cast(BASE_IPI as double precision) as BASE_IPI,');
      QryPedidos.SQL.Add('cast(VAL_CARGA_FED as double precision) as VAL_CARGA_FED,');
      QryPedidos.SQL.Add('cast(VAL_CARGA_EST as double precision) as VAL_CARGA_EST,');
      QryPedidos.SQL.Add('cast(VAL_CARGA_MUN as double precision) as VAL_CARGA_MUN,');
      QryPedidos.SQL.Add('cast(DESCONTO_PROD as double precision) as DESCONTO_PROD,');
      QryPedidos.SQL.Add('cast(VFCP_W04H as numeric(15,2)) as VFCP_W04H,');
      QryPedidos.SQL.Add('cast(VFCPST_W06A as numeric(15,2)) as VFCPST_W06A,');
      QryPedidos.SQL.Add('cast(VFCPSTRET_W06B as numeric(15,2)) as VFCPSTRET_W06B,');
      QryPedidos.SQL.Add('cast(VIPIDEVOL_W12A as numeric(15,2)) as VIPIDEVOL_W12A,');
      QryPedidos.SQL.Add('cast(VALOR_SUBTOTAL as numeric(15,2)) as VALOR_SUBTOTAL');

      QryPedidos.sql.add('from pedido where 0=0');
      QryPedidos.Open;

      if QryPedidos.RecordCount = 0 then
        QryPedidos.Append
      else
        QryPedidos.Edit;

      QryPedidos.FieldByName('ID').AsInteger    := BuscaNovoPedido;
      QryPedidos.FieldByName('ID_VENDEDOR').AsInteger   := QryConfig.FieldByName('ID_VENDEDOR_PADRAO').AsInteger;
      QryPedidos.FieldByName('ID_CLASSIFICACAO').AsInteger := QryConfig.FieldByName('ID_CLASSIFICACAO_PADRAO').AsInteger;
      QryPedidos.FieldByName('IDEMPRESA').AsInteger     := sIDEmpresa;
      QryPedidos.FieldByName('ID_FORMAPAG').AsInteger   := QryFormaPag.FieldByName('ID').AsInteger;

      QryPedidos.FieldByName('COO').AsInteger           := DmTabelas.PAFECF.gCOO;
      QryPedidos.FieldByName('CCF').AsInteger           := DmTabelas.PAFECF.gCCF;
      QryPedidos.FieldByName('GNF').AsInteger           := DmTabelas.PAFECF.gGNF;
      QryPedidos.FieldByName('CAIXA').AsString          := DmTabelas.PAFECF.gCaixa;
      QryPedidos.FieldByName('NUMSERIEECF').AsString    := '';
      QryPedidos.FieldByName('DATA_ENTREGA').AsDateTime := now;
      QryPedidos.FieldByName('HORA_ENTREGA').AsDateTime := now;
      QryPedidos.FieldByName('DAV').AsString            := 'S';
      if not pDAV then
        QryPedidos.FieldByName('DAV').AsString := 'N';
      // preenche dados do cliente
      if DmClientes.Dados_Contato(ClienteCupom.ID) then
      begin
        QryPedidos.FieldByName('ID_CLIENTE').AsInteger      := ClienteCupom.ID;
        QryPedidos.FieldByName('CLIENTE').AsStringTrim     := ClienteCupom.Cliente;
        QryPedidos.FieldByName('END_ENTREGA').AsStringTrim := ClienteCupom.Endereco;
        QryPedidos.FieldByName('NUM_END_ENTREGA').AsStringTrim := ClienteCupom.Numero;
        QryPedidos.FieldByName('COMPL_END_ENTREGA').AsStringTrim := ClienteCupom.Complemento;
        QryPedidos.FieldByName('BAIRRO_END_ENTREGA').AsStringTrim := ClienteCupom.Bairro;
        QryPedidos.FieldByName('CID_END_ENTREGA').AsStringTrim := ClienteCupom.Cidade;
        QryPedidos.FieldByName('UF_END_ENTREGA').AsString := ClienteCupom.UF;
        QryPedidos.FieldByName('CEP_END_ENTREGA').AsStringTrim := ClienteCupom.Cep;
        QryPedidos.FieldByName('CNPJCPF').AsStringTrim := ClienteCupom.CPF;
        QryPedidos.FieldByName('INSCEST').AsStringTrim    := ClienteCupom.Identidade;
        QryPedidos.FieldByName('PLACA_VEIC').AsStringTrim := ClienteCupom.Placa;
        QryPedidos.FieldByName('ODOMETRO').AsStringTrim   := ClienteCupom.Odometro;
      end;

      QryPedidos.FieldByName('VALOR').AsExtended := 0;//formatfloat('#,##0.00',0);
      QryPedidos.FieldByName('DESCONTO').AsExtended := 0;
      QryPedidos.FieldByName('ACRESCIMO').AsExtended := 0;
      QryPedidos.FieldByName('OUTRAS_DESPESAS').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_TOTAL').AsExtended := 0;

      QryPedidos.FieldByName('VALOR_REAL').AsExtended := 0;
      QryPedidos.FieldByName('MARGEM_VENDA').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_COMISSAO').AsExtended := 0;
      QryPedidos.FieldByName('TOTAL_GERAL').AsExtended := 0;

      QryPedidos.FieldByName('VALOR_TROCO').AsExtended := 0;

      QryPedidos.FieldByName('ALIQ_ICMS').AsExtended := 0;
      QryPedidos.FieldByName('BASE_ICMS').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_ICMS').AsExtended := 0;
      QryPedidos.FieldByName('ALIQ_ICMS_ST').AsExtended := 0;
      QryPedidos.FieldByName('BASE_ICMS_ST').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_ICMS_ST').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_PIS').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_COFINS').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_IPI').AsExtended := 0;

      QryPedidos.FieldByName('VALOR_CARGA_TRIB').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_FRETE').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_SEGURO').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_OUTROS').AsExtended := 0;
      QryPedidos.FieldByName('BASE_ISS').AsExtended := 0;
      QryPedidos.FieldByName('VALOR_ISS').AsExtended := 0;
      QryPedidos.FieldByName('BASE_PIS').AsExtended := 0;
      QryPedidos.FieldByName('BASE_COFINS').AsExtended := 0;
      QryPedidos.FieldByName('BASE_IPI').AsExtended := 0;

      QryPedidos.FieldByName('VAL_CARGA_FED').AsExtended := 0;
      QryPedidos.FieldByName('VAL_CARGA_EST').AsExtended := 0;
      QryPedidos.FieldByName('VAL_CARGA_MUN').AsExtended := 0;

      QryPedidos.FieldByName('DESCONTO_PROD').AsExtended := 0;

      QryPedidos.FieldByName('VFCP_W04H').AsExtended := 0;
      QryPedidos.FieldByName('VFCPST_W06A').AsExtended := 0;
      QryPedidos.FieldByName('VFCPSTRET_W06B').AsExtended := 0;
      QryPedidos.FieldByName('VIPIDEVOL_W12A').AsExtended := 0;
	    QryPedidos.FieldByName('VALOR_SUBTOTAL').AsExtended := 0;


      QryPedidos.FieldByName('PEDIDO_NUM').AsString := '';

      QryPedidos.FieldByName('DATA_PEDIDO').AsDateTime := now;
      QryPedidos.FieldByName('HORA_PEDIDO').AsDateTime := now;

      QryPedidos.FieldByName('CONFIRMADA').AsString := 'S';
      QryPedidos.FieldByName('ENTREGUE').AsString := 'S';
      QryPedidos.FieldByName('CANCELADO').AsString := 'N';

      QryPedidos.FieldByName('TIPODOC').AsInteger := 1;
      QryPedidos.FieldByName('TIPO_PEDIDO').AsInteger := 1;

      QryPedidos.FieldByName('DAV_IMPRESSO').AsInteger := 0;
      QryPedidos.FieldByName('NATOP').AsString := '';

      QryPedidos.FieldByName('MD5REGISTRO').AsString := '';
      QryPedidos.FieldByName('NUMPV').AsString := '';
      QryPedidos.FieldByName('CER').AsInteger := 0;
      QryPedidos.FieldByName('ID_MESA').AsInteger := 0;
      QryPedidos.FieldByName('ABASTECIMENTO').AsString := 'N';
      QryPedidos.FieldByName('STATUS_ABASTEC').AsInteger := 0;

      QryPedidos.FieldByName('CHAVE_NFE').AsString := '';
      QryPedidos.FieldByName('STATUS_NFE').AsString := 'NFE';
      QryPedidos.FieldByName('PROTOCOLO_NFE').AsString := '';

      QryPedidos.FieldByName('RECIBO_NFE').AsString := '' ;
      QryPedidos.FieldByName('DEVOLUCAO').AsString := 'N';

      QryPedidos.FieldByName('NUMERO_DOC').AsString := '';
      QryPedidos.FieldByName('SINCRONIZADO').AsString := 'N';
      QryPedidos.FieldByName('IDUSUARIOCANC').AsInteger := 0;

      QryPedidos.FieldByName('NUMDAV').AsString := '';
      QryPedidos.FieldByName('TIPO_FRETE').AsInteger := 1;

      QryPedidos.FieldByName('IDPLANOCONTAS').AsInteger := 1;
      QryPedidos.FieldByName('IDCENTROCUSTO').AsInteger := 1;
      QryPedidos.FieldByName('NFE_TIPOEMISS').AsInteger := 1;
      QryPedidos.FieldByName('NAUTORIZA_VIDALINK').AsString := '';
      QryPedidos.FieldByName('NUM_LOTE').AsString := '';
      QryPedidos.FieldByName('ARQUIVO_XML').AsString := '';
      QryPedidos.FieldByName('NOTAMANUAL').AsString := 'N';
      QryPedidos.FieldByName('COO_CONF_MESA').AsInteger := 0;
      QryPedidos.FieldByName('MODELO').AsString := 'NFE';
      QryPedidos.FieldByName('DATA_AUTORIZA').AsDateTime := now;
      QryPedidos.FieldByName('HORA_AUTORIZA').AsDateTime := now;
      QryPedidos.FieldByName('NRAUTORIZA_FARMAPOP').AsString := '';
      QryPedidos.FieldByName('NAUTORIZA_FUNCIONAL').AsString := '';
      QryPedidos.FieldByName('VEN_PBM').AsString := 'N';
      QryPedidos.FieldByName('COD_PBM').AsInteger := 0;
      QryPedidos.FieldByName('OBSNFE_1').AsString := '';
      QryPedidos.FieldByName('OBSNFE_2').AsString := '';
      QryPedidos.FieldByName('OBSNFE_3').AsString := '';
      QryPedidos.FieldByName('OBSNFE_4').AsString := '';
      QryPedidos.FieldByName('CODIGOSEFAZ').AsInteger := 100;
      QryPedidos.FieldByName('NUMEROSESSAO').AsInteger := 0;
      QryPedidos.FieldByName('STATUS_CANCEL_NFCE').AsString := 'NFA';
      QryPedidos.FieldByName('PROTOCOLO_CANCEL_NFCE').AsString := '';
      QryPedidos.FieldByName('DH_CANCEL_NFCE').AsDateTime := now;

      QryPedidos.FieldByName('VINCULADO_PBM_FARMAPOP').Value := 0;
      QryPedidos.FieldByName('VINCULADO_PBM_PORTAL').Value := 0;
      QryPedidos.FieldByName('VINCULADO_PBM_FUNCIONAL').Value := 0;
      QryPedidos.FieldByName('VINCULADO_PBM_VIDALINK').Value := 0;
      QryPedidos.FieldByName('VINCULADO_PBM_EPHARMA').Value := 0;

      QryPedidos.FieldByName('NRAUTORIZA_PORTAL').AsString := '';
      QryPedidos.FieldByName('SERIE_B07').AsString := '';
      QryPedidos.FieldByName('AJUSTE_NFCE_MANUAL').AsString := '';
      QryPedidos.FieldByName('NUM_TENTATIVA_ENVIO').AsInteger := 0;

      QryPedidos.FieldByName('OBSERVACAO').Value := 0;

      // confirma os dados no banco
      try
        QryPedidos.Post;
      except
      on E: Exception do
        ShowMessage(E.Message +' ');
      end;


    end;
  end;


end;

 

  • Consultores
Postado

Comenta todo o código onde alimenta os campos Double e veja se o post funciona.

Se funcionar, vai preenchendo aos poucos para ver se acha algo pontual.

Tenta AsFloat ou AsCurrency e olha principalmente nos que estão como value que podem "não estar sabendo" como converter.

Postado

Renato, bom dia.

Fiz o teste que me solicitou e o problema dá em duas fontes:
1- os campos que recebem ".value := 0", eles são do tipo blob, saberia me dizer como receber null nestes campos ?

2- Os campos que são BCD como o abaixo. Trocando para Currency, Float o erro persiste.

QryPedidos.FieldByName('VFCP_W04H').AsExtended := 0;

 

  • Consultores
Postado

Boa tarde,

Seguem sugestões:

1- os campos que recebem ".value := 0", eles são do tipo blob, saberia me dizer como receber null nestes campos ?

QryPedidos.FieldByName('campo').Clear;

ou

QryPedidos.FieldByName('campo').Value := NullStr;

2- Os campos que são BCD como o abaixo. Trocando para Currency, Float o erro persiste.

QryPedidos.FieldByName('VFCP_W04H').AsBCD := 0;

ou

QryPedidos.FieldByName('VFCP_W04H').AsFMTBCD := 0;

 

  • Solution
Postado

Boa tarde turma.

Meu colega conseguiu resolver.

No componente do FDQuery, havia uma função chamada OnBeforePost, onde tinham campos numeric que recebia valores, e ali não foi tratado o CAST como mencionado acima.

 

Obrigado à todos.
Fórum Finalizado!!!

  • Curtir 1
  • Este tópico foi criado há 1078 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.