Fórum Parametro nulo #375929
14/10/2009
0
firebird 1.5
delphi 7
sqlconnection
ja tentei colocar o tipo do parametro
datatype := ftDate
ja tentei colocar direito
value := null
tambem ja tentei
AsDate := null
AsDateTime := null
AsSQLTimeStamp := null
clear
alguem poderia me ajudar
vlw
Ricardo54351060
Curtir tópico
+ 0Posts
14/10/2009
Afarias
T+
Gostei + 0
14/10/2009
Ricardo54351060
Gostei + 0
14/10/2009
Afarias
T+
Gostei + 0
14/10/2009
Ricardo54351060
Abaixo segue o código
try
if valida = true then
begin
t.IsolationLevel := xilREADCOMMITTED;
t.TransactionID := random(100);
dm.SQLConnection1.StartTransaction(t);
SQL := TSQLQuery.Create(nil);
SQL.SQLConnection := dm.SQLConnection1;
with SQL do
begin
Close;
SQL.Clear;
SQL.Add(´INSERT INTO ´ +
´ contas_receber ( ´ +
´ REC_NUMERO_TITULO, ´ +
´ REC_NUMERO_PARCELA, ´ +
´ REC_NUMERO_NF, ´ +
´ REC_NUMERO_PEDIDO, ´ +
´ REC_NUMERO_RPS, ´ +
´ REC_ESPECIE, ´ +
´ REC_DATA_EMISSAO, ´ +
´ REC_DATA_VENCIMENTO, ´ +
´ REC_DATA_RECEBIMENTO, ´ +
´ REC_TIPO_DE_CONTA, ´ +
´ REC_CENTRO_DE_CUSTO, ´ +
´ REC_CONTA, ´ +
´ REC_CODIGO_DO_CLIENTE, ´ +
´ REC_VL_TITULO, ´ +
´ REC_VL_DESCONTO, ´ +
´ REC_VL_PAGO, ´ +
´ REC_VL_JUROS, ´ +
´ REC_BANCO_RECEBIMENTO, ´ +
´ REC_FORMA_PAGAMENTO, ´ +
´ REC_OBSERVACAO, ´ +
´ REC_NUMERO_NFE, ´ +
´ REC_VL_A_PAGAR, ´ +
´ REC_SITUACAO, ´ +
´ REC_CODIGO_VENDEDOR, ´ +
´ VALOR_TAXA_ADM, ´ +
´ VALUES ( ´ +
´ :REC_NUMERO_TITULO, ´ +
´ :REC_NUMERO_PARCELA, ´ +
´ :REC_NUMERO_NF, ´ +
´ :REC_NUMERO_PEDIDO, ´ +
´ :REC_NUMERO_RPS, ´ +
´ :REC_ESPECIE, ´ +
´ :REC_DATA_EMISSAO, ´ +
´ :REC_DATA_VENCIMENTO, ´ +
´ :REC_DATA_RECEBIMENTO, ´ +
´ :REC_TIPO_DE_CONTA, ´ +
´ :REC_CENTRO_DE_CUSTO, ´ +
´ :REC_CONTA, ´ +
´ :REC_CODIGO_DO_CLIENTE, ´ +
´ :REC_VL_TITULO, ´ +
´ :REC_VL_DESCONTO, ´ +
´ :REC_VL_PAGO, ´ +
´ :REC_VL_JUROS, ´ +
´ :REC_BANCO_RECEBIMENTO, ´ +
´ :REC_FORMA_PAGAMENTO, ´ +
´ :REC_OBSERVACAO, ´ +
´ :REC_NUMERO_NFE, ´ +
´ :REC_VL_A_PAGAR, ´ +
´ :REC_SITUACAO, ´ +
´ :REC_CODIGO_VENDEDOR, ´ +
´ :VALOR_TAXA_ADM);´);
ParamByName(´REC_NUMERO_TITULO´).value := trim(titulo);
ParamByName(´REC_NUMERO_PARCELA´).value := trim(parcela);
ParamByName(´REC_NUMERO_NF´).value := trim(numeroNotaFiscal);
ParamByName(´REC_NUMERO_PEDIDO´).value := trim(numeroPedido);
ParamByName(´REC_NUMERO_RPS´).value := trim(numeroRps);
ParamByName(´REC_ESPECIE´).value := trim(especie);
ParamByName(´REC_DATA_EMISSAO´).value := dataEmissao;
ParamByName(´REC_DATA_VENCIMENTO´).value := dataVencimento;
if dataRecebimento > 0 then
ParamByName(´REC_DATA_RECEBIMENTO´).value := dataRecebimento
else
ParamByname(´REC_DATA_RECEBIMENTO´).Clear;
ParamByName(´REC_TIPO_DE_CONTA´).value := trim(planoTipo);
ParamByName(´REC_CENTRO_DE_CUSTO´).value := trim(planoCentro);
ParamByName(´REC_CONTA´).value := trim(planoConta);
ParamByName(´REC_CODIGO_DO_CLIENTE´).value := codigoCliente;
ParamByName(´REC_VL_TITULO´).value := valorTitulo;
ParamByName(´REC_VL_DESCONTO´).value := valorDesconto;
ParamByName(´REC_VL_PAGO´).value := valorPago;
ParamByName(´REC_VL_JUROS´).value := valorJuros;
ParamByName(´REC_BANCO_RECEBIMENTO´).value := trim(bancoRecebimento);
ParamByName(´REC_FORMA_PAGAMENTO´).value := trim(formaPagamento);
ParamByName(´REC_OBSERVACAO´).value := observacao;
ParamByName(´REC_NUMERO_NFE´).value := trim(numeroNfe);
ParamByName(´REC_VL_A_PAGAR´).value := valorPagar;
ParamByName(´REC_SITUACAO´).value := trim(situacao);
ParamByName(´REC_CODIGO_VENDEDOR´).value := codigoVendedor;
ParamByName(´VALOR_TAXA_ADM´).value := valorTaxaAdm;
ExecSQL;
end;
SQL.Free;
dm.SQLConnection1.Commit(t);
retorno := true;
messagedlg(´Gravação efetuada com sucesso!´, mtInformation, [mbOK], 0);
end;
except
on E: Exception do
begin
dm.SQLConnection1.Rollback(t);
SQL.Free;
messagedlg(´erro de gravação verifique! ´ + E.Message, mtError, [mbOK], 0);
end;
end;
Gostei + 0
14/10/2009
Afarias
´VALOR_TAXA_ADM[b:944f6dc18a],[/b:944f6dc18a] ´ +
´ VALUES ( ´ +
quando deveria ser:
´VALOR_TAXA_ADM[b:944f6dc18a])[/b:944f6dc18a] ´ +
´ VALUES ( ´ +
É estranho .. mas bom... eu não uso DBX e não saberia dizer se ele dá esse erro normalmente ao dar um Clear em um parâmetro q não recebeu valor. Eu acho q vc poderia simplesmente ignorar ou contornar (se for esse o caso), tipo:
if dataRecebimento > 0 then
ParamByName(´REC_DATA_RECEBIMENTO´).value := dataRecebimento
else
if not ParamByName(´REC_DATA_RECEBIMENTO´).IsNull then
ParamByname(´REC_DATA_RECEBIMENTO´).Clear;
ou
if dataRecebimento > 0 then
ParamByName(´REC_DATA_RECEBIMENTO´).value := dataRecebimento
else
try
ParamByname(´REC_DATA_RECEBIMENTO´).Clear;
except end;
T+
Gostei + 0
14/10/2009
Ricardo54351060
mas vlw pelas dicas
Gostei + 0
14/10/2009
Ricardo54351060
Após varias tentativas descobri que para passar um parametro nulo através da sqlquery o Null deverá ficar entre parenteses (Null)
Obrigado a todos
fui
Gostei + 0
14/10/2009
Steve_narancic
ta brincando???
eu ja fiz funcionar, definindo o tipo do parametro antes de passar o valor para o mesmo como no exemplo a seguir:
qry.sql.add(´update notas set datarecebimento = :datarecebimento where codigo = 1´); qry.parambyname(´datarecebimento´).datatype:= ftDateTime; qry.parambyname(´datarecebimento´).value:= null; qry.execsql;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)