Ir para conteúdo
Fórum Script Brasil
  • 0

Data como Parâmetro


Guest --Carlos --

Pergunta

Guest --Carlos --

Bom dia pessoal, estou usando esta quey para uma simples inserção no banco, mas quando executo, ela me retorna o erro

invalid precison value.

pois o problema é o ultimo parâmetro (XDT_VENCIMENTO ) pois se retiro ele do script a query é executada com sucesso,

se coloco me retorna o erro.

with ADOQuery1 do
begin
sql.Clear;
sql.Add(' Insert into TESTE ');
sql.Add(' (XCD_INT_VENDA, XCD_INT_PLANO_PAG, XCD_INT_FORMA_REC, XNUMERO_DOCUMENTO, XDT_ENTRADA )');
sql.Add(' values :XCD_INT_VENDA, :XCD_INT_PLANO_PAG, :XCD_INT_FORMA_REC, :XNUMERO_DOCUMENTO, :XDT_VENCIMENTO )');

Parameters.ParamByName('XCD_INT_VENDA').Value := cVendas.qryVendasEdit.fieldByName('XCD_INT_VENDA').AsInteger;
Parameters.ParamByName('XCD_INT_PLANO_PAG').Value := qryContasReceberEdit.fieldByName('XCD_INT_PLANO_PAG').AsInteger;
Parameters.ParamByName('XCD_INT_FORMA_REC').Value := qryContasReceberEdit.fieldByName('XCD_INT_FORMA_REC').AsInteger;
Parameters.ParamByName('XNUMERO_DOCUMENTO').Value := qryContasReceberEdit.fieldByName('XNUMERO_DOCUMENTO').AsInteger;
Parameters.ParamByName('XDT_VENCIMENTO').Value := FormatdateTime('yyyy"-"mm"-"dd',StrToDate(edtDtVencimento.Text));
ExecSQL;
end;

Já tentei de várias formas formatar esta data mas continua o erro, se alguém puder me dar um help.

Obrigado desde já pessoal

Editado por Micheus
Adicionada a tag [CODE]...[/CODE] para melhor visualização do codigo. Por favor, utilize-a. ;-)
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Bom dia pessoal, estou usando esta quey para uma simples inserção no banco, mas quando executo, ela me retorna o erro

invalid precison value.

pois o problema é o ultimo parâmetro (XDT_VENCIMENTO ) pois se retiro ele do script a query é executada com sucesso,

se coloco me retorna o erro.

with ADOQuery1 do

begin

sql.Clear;

sql.Add(' Insert into TESTE ');

sql.Add(' (XCD_INT_VENDA, XCD_INT_PLANO_PAG, XCD_INT_FORMA_REC, XNUMERO_DOCUMENTO, XDT_ENTRADA )');

sql.Add(' values :XCD_INT_VENDA, :XCD_INT_PLANO_PAG, :XCD_INT_FORMA_REC, :XNUMERO_DOCUMENTO, :XDT_VENCIMENTO )');

Parameters.ParamByName('XCD_INT_VENDA').Value := cVendas.qryVendasEdit.fieldByName('XCD_INT_VENDA').AsInteger;

Parameters.ParamByName('XCD_INT_PLANO_PAG').Value := qryContasReceberEdit.fieldByName('XCD_INT_PLANO_PAG').AsInteger;

Parameters.ParamByName('XCD_INT_FORMA_REC').Value := qryContasReceberEdit.fieldByName('XCD_INT_FORMA_REC').AsInteger;

Parameters.ParamByName('XNUMERO_DOCUMENTO').Value := qryContasReceberEdit.fieldByName('XNUMERO_DOCUMENTO').AsInteger;

Parameters.ParamByName('XDT_VENCIMENTO').Value := FormatdateTime('yyyy"-"mm"-"dd',StrToDate(edtDtVencimento.Text));

ExecSQL;

end;

Já tentei de várias formas formatar esta data mas continua o erro, se alguém puder me dar um help.

Obrigado desde já pessoal

No trecho do seu codigo:

Parameters.ParamByName('XDT_VENCIMENTO').Value := FormatdateTime('yyyy"-"mm"-"dd',StrToDate(edtDtVencimento.Text));

Já tentou utilizar:

Parameters.ParamByName('XDT_VENCIMENTO').asdatetime := FormatdateTime('yyyy"-"mm"-"dd',StrToDate(edtDtVencimento.Text));

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Já sim, pois por ser parâmetro ele não aceita passar o tipo do campo, tenho que passar como value.

Eu tentei assim e deu certo, mas..

with ADOQuery1 do

begin

sql.Clear;

sql.Add(' Insert into TESTE ');

sql.Add(' (XCD_INT_VENDA, XCD_INT_PLANO_PAG, XCD_INT_FORMA_REC, XNUMERO_DOCUMENTO, XDT_VENCIMENTO )');

sql.Add(' values :XCD_INT_VENDA, :XCD_INT_PLANO_PAG, :XCD_INT_FORMA_REC, :XNUMERO_DOCUMENTO, ''' + FormatDateTime('yyyy"-"mm"-"dd',StrToDate(edtDtVencimento.Text)) + ''' )');

Parameters.ParamByName('XCD_INT_VENDA').Value := cVendas.qryVendasEdit.fieldByName('XCD_INT_VENDA').AsInteger;

Parameters.ParamByName('XCD_INT_PLANO_PAG').Value := qryContasReceberEdit.fieldByName('XCD_INT_PLANO_PAG').AsInteger;

Parameters.ParamByName('XCD_INT_FORMA_REC').Value := qryContasReceberEdit.fieldByName('XCD_INT_FORMA_REC').AsInteger;

Parameters.ParamByName('XNUMERO_DOCUMENTO').Value := qryContasReceberEdit.fieldByName('XNUMERO_DOCUMENTO').AsInteger;

//Parameters.ParamByName('XDT_VENCIMENTO').Value := FormatdateTime('yyyy"-"mm"-"dd',StrToDate(edtDtVencimento.Text));

ExecSQL;

end;

ou seja informando direto ele aceitou, eu consigo jogar esta linha

''' + FormatDateTime('yyyy"-"mm"-"dd',StrToDate(edtDtVencimento.Text)) + '''

aí em baixo no ultimo parametro onde esta comentado ?

obrigado.

abs

Link para o comentário
Compartilhar em outros sites

  • 0

Carlos, se o código está exatamente deste jeito que você postou, então seu problema não deve ser, necessariamente, com a passagem de parâmetros. Observe esta parte do código;

sql.Add(' values :XCD_INT_VENDA, :XCD_INT_PLANO_PAG, :XCD_INT_FORMA_REC, :XNUMERO_DOCUMENTO, :XDT_VENCIMENTO )');

está faltando o "(" da cláusula VALUES:

sql.Add(' values (:XCD_INT_VENDA, :XCD_INT_PLANO_PAG, :XCD_INT_FORMA_REC, :XNUMERO_DOCUMENTO, :XDT_VENCIMENTO )');

Quanto a passagem do parâmetro, após a correção deverá funcionar, mas não é necessário a conversão como está anteriormente postado, tente assim:

Parameters.ParamByName('XDT_VENCIMENTO').AsDateTime := StrToDate(edtDtVencimento.Text);

Lembre-se, é sempre importante postar a mensagem de erro que você recebe - quem está do lado de cá não sabe o que você vê aí. ;)

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...