GARANTIR DESCONTO

Fórum Transferir dados de um Edit para um banco de dados #414008

13/03/2012

0

Estou criando uma aplicação de avisar quando um produto estiver em falta no estoque, e botei um Edit+Checkbox para que a pessoa possa escolher se deseja a opção de informar, funcionara assim:
No DBGrid tem os produtos e uma Columns ESTOQUE_ATUAL, do lado tem um checkbox que quando vc ativa aparece um Edit, queria saber se tem como fazer com que o que foi escrito no Edit altere o que está no ESTOQUE_ATUAL do field selecionado. Abraços.
Eduardo Hoffmann

Eduardo Hoffmann

Responder

Posts

13/03/2012

Vinícius Belisário

Tem sim cara, faça um Update na tabela pegando como parametro o valor do Edit...

Comando SQL:
UPDATE TABELA
SET ESTOQUE_ATUAL = :PAR_ESTOQUE


Query1.ParamByName(PAR_ESTOQUE).AsInteger := StrToInt(Edit1.Text);


mais ou menos assim...
Responder

Gostei + 0

13/03/2012

Vinícius Belisário

ignora o </br>

não sie formatar no DevMedia
Responder

Gostei + 0

13/03/2012

Eduardo Hoffmann

[img]http://img580.imageshack.us/img580/4051/estoque1.jpg[/img]

Seguinte, nessa DBGrid quando o Nº ali em ESTOQUE_ATUAL ficar menor que 10, o numero fica em vermelho, eu queria que desse para uma pessoa que não sabe mecher escolher qual vai ser o valor para que o numero ficasse em vermelho.
EX: Atualmente se eu modifico ali, boto o total de 8 no ESTOQUE_ATUAL o numero ficaria em vermelho.
Ai queria fazer com que o Edit1 mudasse o seguinte código para que em vez de ser padronizado a quantidade minima 10, ela possa escolher:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Column.Field.FieldName = ESTOQUE_ATUAL) then
      begin
         if IBTable1.FieldByName (ESTOQUE_ATUAL).Value < 10 then
            begin
               DBGrid1.Canvas.Font.Color:= clRed;
               DBGrid1.Canvas.FillRect(Rect);
               DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
            end
         else
            begin
               DBGrid1.Canvas.Font.Color:= clBlack;
               DBGrid1.Canvas.FillRect(Rect);
               DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
            end;
      end;
end;
Responder

Gostei + 0

13/03/2012

Vinícius Belisário

ta dando erro no seu código, não ta pintando o número de vermelho, ou você não consegue clicar na celular e alterar o número?
Responder

Gostei + 0

13/03/2012

Eduardo Hoffmann

Tipo eu não to conseguindo fazer com o que é digitado no Edit1 ir para uma Field do DBGrid entendeu?
Eu ainda não consegui fazer um código para que o que está no Edit1 seja transferido para uma Field do DBgrid.
EX: Digito la no Edit1 20, queria que desse para escolher tipo o Mouse Genius para que quando o ESTOQUE_ATUAL chegasse a 20 ficasse em vermelho, entedeu +/-?
Responder

Gostei + 0

13/03/2012

Glauber Lima

Quando vc estar fazendo a update no mando o estoque esta sendo alterado ?

Pelo o que estou vendo vc tem que fechar e abrir o componente de acesso para o DBgrid tenha uma visão atual do Banco de dados.
Responder

Gostei + 0

14/03/2012

Eduardo Hoffmann

Issoooo ele altera o Field ESTOQUE_ATUAL, em vez de alterar o código:

[b]procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Column.Field.FieldName = ESTOQUE_ATUAL) then
begin
if IBTable1.FieldByName (ESTOQUE_ATUAL).Value < 10 then
begin
DBGrid1.Canvas.Font.Color:= clRed;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end
else
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
end;[/b]

Queria que o edit alteresse o código value do código if IBTable1.FieldByName (ESTOQUE_ATUAL).Value < [color=red]10[/color] then
Responder

Gostei + 0

14/03/2012

Bruno Leandro

tenta substituir a linha

if IBTable1.FieldByName (ESTOQUE_ATUAL).Value < 10 then

por

if IBTable1.FieldByName (ESTOQUE_ATUAL).Value < strtoint(edit1.text) then

e no evento onchange do edit1 coloque DBGrid1.refresh
Responder

Gostei + 0

14/03/2012

Eduardo Hoffmann

Não deu certo, primeiro pede pra identificar o
if IBTable1.FieldByName (ESTOQUE_ATUAL).Value < strtoint(edit1.text) then
ai eu botei
if IBTable1.FieldByName (ESTOQUE_ATUAL).Value < strtoint(edit1.text) then
O programa roda, só que da debug e não da para mecher
Responder

Gostei + 0

14/03/2012

Bruno Leandro

se o edit1 tiver vazio pode ser problema tenta colocar, StrToIntDef(edit1.text,0)

Responder

Gostei + 0

14/03/2012

Eduardo Hoffmann

Desculpe a ignorancia, sou novo no delphi, mas onde boto isso?
StrToIntDef(edit1.text,0)
Responder

Gostei + 0

14/03/2012

Vinícius Belisário

assim:
if IBTable1.FieldByName (ESTOQUE_ATUAL).Value < strtoint(edit1.text) then


por assim:

if IBTable1.FieldByName (ESTOQUE_ATUAL).Value < StrToIntDef(edit1.text,0) then
Responder

Gostei + 0

14/03/2012

Eduardo Hoffmann

Vlw, deu certo, porém ele ta padronizando não está por ID, será que tem como ser por ID(cada produto um value)
Responder

Gostei + 0

14/03/2012

Eduardo Hoffmann

Reparei agora também que ele não está salvando, vamos supor, eu boto lá no Edit o valor 10, la no gbgrid o ESTOQUE_ATUAL está em 8, ai fica vermelho, só que se eu fechar e rodar de novo ele fica valor 8 porém sem estar com o alerta ativado, não fica em vermelho.
Responder

Gostei + 0

14/03/2012

Bruno Leandro

uma solução seria no cadastro de produto ter o estoque minimo de cada produto
Responder

Gostei + 0

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

Aceitar