Fórum Erro ao ter saldo estoque = 0 #318835
10/04/2006
0
O problema é quando tenho estoque com SALDO = 0 (zero) me acontece um erro no aplicativo... caso for diferente de zero (possuir estoque) funciona normalmente.
[b:4904be51ef]ERRO: ´´ is not a valid floating point value[/b:4904be51ef]
Mesmo com o erro me grava a entrada.. só nao atualiza meu SALDO do produto.
PODEM ME AJUDAR POR FAVOR?
// PROCEDIMENTO USADO
procedure TForm_Entradas.BtnOKClick(Sender: TObject);
var
dataCad : string;
ddata : TDate;
Begin
ddata := strtodateDef(Form_Menu.SBPrincipal.Panels[2].text,0);
if ddata > 0 then
dataCad := formatdatetime(´yyyy-mm-dd´,ddata)
else
dataCad := ´null´;
/////////////////////////// INSERE NA TABELA ENTRADAS
Begin
decimalseparator:=´.´; //DEFINE O SEPARADOR COMO . FICA 33.33 E NAO 33,33
QueryEntradas.Active := False;
QueryEntradas.SQL.Clear;
QueryEntradas.Sql.Add(´insert into tab_entradas (PRODUTO, COD_PRODUTO, UN, NF, PRECO_COMPRA, QTDE, FORNECEDOR, DATA_ENTRADA, ´+
´USUARIO, VIVO) values (´+´´´´+CBProduto.text+´´´´+´,´+´´´´+EdCod.text+´´´´+´,´+´´´´+EdUN.text+´´´´+´,´+´´´´+EdNF.text+´´´´+´,´+QuotedStr(FLOATTOSTR(EdValorUnit.VALUE))+´,´+QuotedStr(FLOATTOSTR(EdQtde.VALUE))+´,´+´´´´+CBFornecedor.text+´´´´+´,´+´´´´+dataCad+´´´´+´,´+´´´´+Form_Menu.SBPrincipal.Panels[0].Text+´´´´+´,´+´´´´+´S´+´´´)´);
QueryEntradas.ExecSql; //execucao final
MessageDLG(´OK.QUANTIDADE adicionada no Estoque.´,mtinformation, [mbok],0); //mensagem de OK
decimalseparator:=´,´;
End;
///////////////////VERIFICA SALDO ANTIGO DO PRODUTO
with QueryProdutos do
Begin
QueryProdutos.Close;
QueryProdutos.Sql.Clear;
QueryProdutos.Sql.text := ´select COD,PRODUTO,SALDO from tab_produtos where COD = ´+QuotedStr(EdCod.text)+´´;
QueryProdutos.Active := true;
End;
EDSaldoEstoqueAntigo.Text:=queryProdutos.FieldByname(´SALDO´).Asstring;
EdSAldoEstoqueNovo.Text:=floattostr(strtofloat(EDSAldoEstoqueAntigo.text)+ strtofloat(EDQtde.text));
with QueryProdutos do
Begin
decimalseparator:=´.´; //DEFINE O SEPARADOR COMO . FICA 33.33 E NAO 33,33
Close;
Sql.Clear;
Sql.text:= ´update tab_produtos Set SALDO = ´+QuotedStr(FLOATTOSTR(EdSAldoEstoqueNovo.VALUE))+´ where COD=´´´+edcod.text+´´´´;
ExecSql;
End;
decimalseparator:=´,´; //volta o separador para ,
//End
BtnCadastrar.Enabled := true;
BtnCancelar.Enabled := false;
CBFornecedor.Text := ´´;
CBFornecedor.Enabled := False;
CBProduto.Text := ´´;
CBProduto.Enabled := false;
EdUn.Clear;
EdQtde.Clear;
EdQtde.Enabled := false;
EdValorUnit.Clear;
EdValorUnit.Enabled := false;
EdNf.Clear;
EdNf.Enabled := false;
BtnOK.Enabled := false;
Form_Entradas.Close;
end;
Ce
Curtir tópico
+ 0Posts
10/04/2006
Rjun
Gostei + 0
10/04/2006
Tolimpio
e convertendo para float.......
faca um breakpoint nas linha que da o erro...... e verifique o valor a ser convertido........
Gostei + 0
10/04/2006
Ce
Estou passando ZERO (pelo menos estou pretendendo) :?
Gostei + 0
10/04/2006
Edilcimar
Gostei + 0
10/04/2006
Ce
mas aonde q faço isso?? poderia me dar o exemplo :(
Gostei + 0
11/04/2006
Gameiro
function Tcaixa.validafloat(valor : string):boolean; begin //função que verifica se foi digitado um valor q não pode ser convertido try StrTofloat(valor); result := true; except on EConvertError do result := false; end; end; NO ONEXIT DO EDIT OU NA HORA DE FAZER O INSERT USE A FUNÇÃO if validafloat(currencyedit2.Text) then begin valor:=strtofloat(currencyedit2.Text); end else begin valor:=0.00; end;
na sua instrução sql em vez de passar o QuotedStr(FLOATTOSTR(EdQtde.VALUE)), tente passar direto a variavel que recebeu o valor convertido.
Obs.: É mais fácil de entender o código se vc usar parametros na instrução SQL.
Até mais. :)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)