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

DBGrid novamente


Manoel Zancheta

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 0
Um campo por vez. Se a coluna quantia for maior que zero, quero que a coluna data da compra assuma a data do SO.

Exemplo:

Use o evento OnCellClick do DBGrid

procedure TForm1.DBGrid1CellClick(Column: TColumn);
var i : integer;
begin
          if DBGrid1.SelectedField.FieldName='DATA' then
            begin
               
               if (CDS_VendasQuant.Value > 0)  then
                  begin
                     CDS_Vendas.Edit;
                     CDS_VendasDATA.Value := now;
                  end
               else
                  begin
                     CDS_Vendas.Edit;
                     CDS_VendasDATA.Clear;
                  end;

               CDS_Vendas.Post;
               CDS_Vendas.ApplyUpdates(-1);
            end;

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

olá Jhonas.

Eu havia feito como seu exemplo. O problema é que só atualiza a coluna DATA quando eu clico com o mouse. Eu tentei colocar no keydown keyup, etc, etc... mas nenhum atualiza concomitantemente ao que está sendo digitado.

Grato!

Link para o comentário
Compartilhar em outros sites

  • 0
Eu havia feito como seu exemplo. O problema é que só atualiza a coluna DATA quando eu clico com o mouse. Eu tentei colocar no keydown keyup, etc, etc... mas nenhum atualiza concomitantemente ao que está sendo digitado.

O problema é que só atualiza a coluna DATA quando eu clico com o mouse

e não é assim que voce quer ?

mas nenhum atualiza concomitantemente ao que está sendo digitado

mas sendo digitado em que campo ?

Link para o comentário
Compartilhar em outros sites

  • 0
eu queria que se na coluna quantia o valor for > 0, coloque a data na coluna Data.

Manoel ... se voce quiser isso automaticamente, daria um problema, pois toda a vez que a coluna quantia estiver > 0 a data será alterada para a data atual

imagina a tabela

quantia Data

10........23/04/2009

2..........23/04/2009

se essa rotina estiver automatizada o que acontece ? voce perde a data anterior

10.........25/08/2009

2...........25/08/2009

É isso que voce quer ?

Me lembrei de outra coisa... talvez voce queria enquanto esta digitando no dbgrid no campo quantia ( > 0 ) , ao passar com o foco no campo data a mesma seja colocada no campo sem que voce tenha que digitar .... e se fosse uma alteração e o campo data estivesse preenchido então não mudaria a data ... seria isso ?

Link para o comentário
Compartilhar em outros sites

  • 0

Fala Jhonas...

Manoel ... se voce quiser isso automaticamente, daria um problema, pois toda a vez que a coluna quantia

estiver > 0 a data será alterada para a data atual

Seria isto mesmo pois neste Grid todas as datas estarão null (é uma condição da Query)

Me lembrei de outra coisa... talvez voce queria enquanto esta digitando no dbgrid no campo quantia ( > 0 ) , ao passar com o foco no campo data a mesma seja colocada no campo sem que voce tenha que digitar .... e se fosse uma alteração e o campo data estivesse preenchido então não mudaria a data ... seria isso ?

Eu tinha pensado em não ter a necessidade de passar pelo campo data. Eu estou conseguindo colocar a data automática mas não estou conseguindo um controle 100% eficiente. Por exemplo, se o usuário colocar a quantia e pressionar seta para baixo, não muda a data. Já tentei em vários eventos do grid e não consegui um (ou combinação de vários eventos) que "cerque" todas as possibilidades.

Grato!

Editado por Manoel Zancheta
Link para o comentário
Compartilhar em outros sites

  • 0
Por exemplo, se o usuário colocar a quantia e pressionar seta para baixo, não muda a data.

Veja se é isto que esta querendo

procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if key = vk_down then
       begin
         if (dbgrid1.Columns[4].Field.FieldName = 'QUANTIA') then  // numero da coluna do campo Quantia
            begin
                ClientDataSet1.Prior;
                if ClientDataSet1.FieldByName ('QUANTIA').Value > 0 then
                   begin
                      ClientDataSet1.Edit;
                      ClientDataSet1.FieldByName ('DATA').Value := NOW;
                      ClientDataSet1.Post;
                   end;
                 ClientDataSet1.Next;
            end;
       end;
end;

abraço

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...