MEU BOTÃO DE EDIÇÃO NÃO FUNCIONA CORRETAMENTE!

08/08/2020

0

Pessoal, tenho um botão de editar em um formulário que nao esta salvando corretamente.
Se por exemplo eu salvar um valor de R$ 13,35 e tentar editar esse valor para R$13,65 ele edita somente R$ 13,00.
outro exemplo se eu salvar R$ 20,98 e editar para R$ 30,35 ele arredonda pra R$ 30,00. me ajudem!

procedure TfrmOferta.btnEditarClick(Sender: TObject);
begin
if (cbMes.Text <> '') and (edtValor.Text <> '') then
begin
associarCampos;
dm.tb_ofertas.Edit;

dm.query_ofertas.Close;
dm.query_ofertas.SQL.Clear;
dm.query_ofertas.SQL.Add('update entradas_ofertas set movimento = :movimento, valor = :valor, referente = :referente where id = :id');
dm.query_ofertas.ParamByName('movimento').Value := edtMovimento.Text;
dm.query_ofertas.ParamByName('valor').Value := edtValor.Text;
dm.query_ofertas.ParamByName('referente').Value := cbMes.Text;

dm.query_ofertas.ParamByName('id').Value := edtCodigo.Text;
dm.query_ofertas.ExecSql;

MessageDlg('Editado com Sucesso!!', mtInformation, mbOKCancel, 0);

dm.query_movimentacoes.Close;
dm.query_movimentacoes.SQL.Clear;
dm.query_movimentacoes.SQL.Add('update movimentacoes set valor = :valor, referente = :referente where id_movimento = :id and tipo = "OFERTA"');
dm.query_movimentacoes.ParamByName('valor').Value := edtValor.Text;
dm.query_movimentacoes.ParamByName('referente').Value := cbMes.Text;
dm.query_movimentacoes.ParamByName('id').Value := edtCodigo.Text;
dm.query_movimentacoes.ExecSql;
buscarData;
desabilitarCampos;
btnSalvar.Enabled := false;
btnEditar.Enabled := false;
btnDeletar.Enabled := false;
btnNovo.Enabled := true;
end
else
begin
MessageDlg('Preencha os Campos', mtInformation, mbOKCancel, 0);
end;
end;
Quilson Lira

Quilson Lira

Responder

Posts

08/08/2020

Leandro Carvalho

Pessoal, tenho um botão de editar em um formulário que nao esta salvando corretamente.
Se por exemplo eu salvar um valor de R$ 13,35 e tentar editar esse valor para R$13,65 ele edita somente R$ 13,00.
outro exemplo se eu salvar R$ 20,98 e editar para R$ 30,35 ele arredonda pra R$ 30,00. me ajudem!

procedure TfrmOferta.btnEditarClick(Sender: TObject);
begin
if (cbMes.Text <> '') and (edtValor.Text <> '') then
begin
associarCampos;
dm.tb_ofertas.Edit;

dm.query_ofertas.Close;
dm.query_ofertas.SQL.Clear;
dm.query_ofertas.SQL.Add('update entradas_ofertas set movimento = :movimento, valor = :valor, referente = :referente where id = :id');
dm.query_ofertas.ParamByName('movimento').Value := edtMovimento.Text;
dm.query_ofertas.ParamByName('valor').Value := edtValor.Text;
dm.query_ofertas.ParamByName('referente').Value := cbMes.Text;

dm.query_ofertas.ParamByName('id').Value := edtCodigo.Text;
dm.query_ofertas.ExecSql;

MessageDlg('Editado com Sucesso!!', mtInformation, mbOKCancel, 0);

dm.query_movimentacoes.Close;
dm.query_movimentacoes.SQL.Clear;
dm.query_movimentacoes.SQL.Add('update movimentacoes set valor = :valor, referente = :referente where id_movimento = :id and tipo = "OFERTA"');
dm.query_movimentacoes.ParamByName('valor').Value := edtValor.Text;
dm.query_movimentacoes.ParamByName('referente').Value := cbMes.Text;
dm.query_movimentacoes.ParamByName('id').Value := edtCodigo.Text;
dm.query_movimentacoes.ExecSql;
buscarData;
desabilitarCampos;
btnSalvar.Enabled := false;
btnEditar.Enabled := false;
btnDeletar.Enabled := false;
btnNovo.Enabled := true;
end
else
begin
MessageDlg('Preencha os Campos', mtInformation, mbOKCancel, 0);
end;
end;


pega o retorno da query antes do execsql:
declare clipbrd
Clipboard.astext := dm.query_movimentacoes.sql.text;

e cole no sql do seu banco para ver como esta indo.
Responder

11/08/2020

Emerson Nascimento

talvez o problema esteja na forma como os dados estão sendo enviados ao componente.
tente assim:
procedure TfrmOferta.btnEditarClick(Sender: TObject);
begin
	if (cbMes.Text <> '') and (edtValor.Text <> '') then
	begin
		associarCampos;
		dm.tb_ofertas.Edit;

		dm.query_ofertas.Close;
		dm.query_ofertas.SQL.Clear;
		dm.query_ofertas.SQL.Add('update entradas_ofertas set movimento = :movimento, valor = :valor, referente = :referente where id = :id');
		dm.query_ofertas.ParamByName('movimento').AsString := edtMovimento.Text; // não consegui identificar, deixei como texto
		dm.query_ofertas.ParamByName('valor').AsFloat := StrToFloat(edtValor.Text);
		dm.query_ofertas.ParamByName('referente').AsString := cbMes.Text;
		dm.query_ofertas.ParamByName('id').AsString := edtCodigo.Text;
		dm.query_ofertas.ExecSql;

		MessageDlg('Editado com Sucesso!!', mtInformation, mbOKCancel, 0);

		dm.query_movimentacoes.Close;
		dm.query_movimentacoes.SQL.Clear;
		dm.query_movimentacoes.SQL.Add('update movimentacoes set valor = :valor, referente = :referente where id_movimento = :id and tipo = "OFERTA"');
		dm.query_movimentacoes.ParamByName('valor').AsFloat := StrToFloat(edtValor.Text);
		dm.query_movimentacoes.ParamByName('referente').AsString := cbMes.Text;
		dm.query_movimentacoes.ParamByName('id').AsInteger := StrToInt(edtCodigo.Text);
		dm.query_movimentacoes.ExecSql;

		buscarData;
		desabilitarCampos;

		btnSalvar.Enabled := false;
		btnEditar.Enabled := false;
		btnDeletar.Enabled := false;
		btnNovo.Enabled := true;
	end
	else
	begin
		MessageDlg('Preencha os Campos', mtInformation, mbOKCancel, 0);
	end;
end;
o que fiz foi 'tipar' os parâmetros e utilizar as funções pertinentes para transformar o conteúdo digitado no tipo correto.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar