Manoel Zancheta Postado Agosto 25, 2009 Denunciar Share Postado Agosto 25, 2009 Olá.Estou tentando gravar um campo data diferente de null (data atual) somente quando uma coluna for > 0. Porém, só consegui isto no evento click do dbgrid. Tem outra maneira de fazer?Grato! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 25, 2009 Denunciar Share Postado Agosto 25, 2009 Estou tentando gravar um campo data diferente de null (data atual) somente quando uma coluna for > 0.voce quer fazer isso somente em um campo da coluna ou em todos os campos da coluna ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Agosto 25, 2009 Autor Denunciar Share Postado Agosto 25, 2009 Olá Jhonas.Um campo por vez. Se a coluna quantia for maior que zero, quero que a coluna data da compra assuma a data do SO.Grato novamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 25, 2009 Denunciar Share Postado Agosto 25, 2009 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 DBGridprocedure 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Agosto 25, 2009 Autor Denunciar Share Postado Agosto 25, 2009 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 25, 2009 Denunciar Share Postado Agosto 25, 2009 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 mousee não é assim que voce quer ?mas nenhum atualiza concomitantemente ao que está sendo digitadomas sendo digitado em que campo ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Agosto 25, 2009 Autor Denunciar Share Postado Agosto 25, 2009 eu queria que se na coluna quantia o valor for > 0, coloque a data na coluna Data. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 25, 2009 Denunciar Share Postado Agosto 25, 2009 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 tabelaquantia Data10........23/04/20092..........23/04/2009se essa rotina estiver automatizada o que acontece ? voce perde a data anterior10.........25/08/20092...........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 ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Agosto 26, 2009 Autor Denunciar Share Postado Agosto 26, 2009 (editado) 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 Agosto 26, 2009 por Manoel Zancheta Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Manoel Zancheta Postado Agosto 26, 2009 Autor Denunciar Share Postado Agosto 26, 2009 Vou utilizar o exemplo do Jhonas, obrigando o click do mouse, não vou complicar mais não. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Agosto 26, 2009 Denunciar Share Postado Agosto 26, 2009 Jhonas da forma que o Manoel Zancheta, não daria certo na query a qual o Dbgrid esta linkado criar um campo para calculo com string com o nome data e em "OnCalcFields" da Query,ele poderia colocar a condição de aparecer a data ou não. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 26, 2009 Denunciar Share Postado Agosto 26, 2009 Por exemplo, se o usuário colocar a quantia e pressionar seta para baixo, não muda a data.Veja se é isto que esta querendoprocedure 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Manoel Zancheta
Olá.
Estou tentando gravar um campo data diferente de null (data atual) somente quando uma coluna for > 0. Porém, só consegui isto no evento click do dbgrid. Tem outra maneira de fazer?
Grato!
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
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.