Atualizar Banco (ClientDataset)
Ola pessoal,
meu problema e o seguinte:
Tenho um grid que controla os pedidos de uma pizzaria e neste grid tenho um campo com Hora_prev_entrega, gostaria que quando este pedido ultrapassar 30 min ele seja pintado de outra cor no grid , isto ira mostrar que pedido ja esta a mais de 30 min na cozinha..
1 - Como posso atualizar as informacoes a cada 5 minutos.
2 - Pode usar o Timer para fazer isto.
3 - Como atualizar o grid , estou usando o ClientDataset. (close\open\refresh)
4 - Como pintar o pedido(Grid) de cor diferente se ultrapassou os 30 minutos.
estou usando Delphi 7 e FB 1.5
valeu pessoal..
ate +
meu problema e o seguinte:
Tenho um grid que controla os pedidos de uma pizzaria e neste grid tenho um campo com Hora_prev_entrega, gostaria que quando este pedido ultrapassar 30 min ele seja pintado de outra cor no grid , isto ira mostrar que pedido ja esta a mais de 30 min na cozinha..
1 - Como posso atualizar as informacoes a cada 5 minutos.
2 - Pode usar o Timer para fazer isto.
3 - Como atualizar o grid , estou usando o ClientDataset. (close\open\refresh)
4 - Como pintar o pedido(Grid) de cor diferente se ultrapassou os 30 minutos.
estou usando Delphi 7 e FB 1.5
valeu pessoal..
ate +
Chmelo
Curtidas 0
Respostas
Bruno Belchior
19/10/2005
acho q não se faz nem necessário atualizar o grid a cada 5 min... porque seria muito difícil passar esse tempo com o sistema aberto sem repintar a grid... (mas de qualquer forma é possível fazer isso usando um TTimer)... mas o seguinte código no evento OnDrawColumnCell pode pintar
if Column.Field = DtStHoraPedito then begin if MinuteOf(Now - DtStHoraPedito.AsDateTime) >= 30 then begin DBGrid1.Canvas.Font.Color := clBlue; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end;
GOSTEI 0
Chmelo
19/10/2005
Caro Bruno,
obrigado pela atencao, o grid ate que eu consigo pintar , mas o maior problema e que gostaria de atualizar estes pedidos que estao a mais de 30 minutos na cozinha, e por isso que eu preciso atualizar o grid , para poder ver qual o pedido que esta demorando para ser entregue na mesa do cliente.
valeu...
obrigado pela atencao, o grid ate que eu consigo pintar , mas o maior problema e que gostaria de atualizar estes pedidos que estao a mais de 30 minutos na cozinha, e por isso que eu preciso atualizar o grid , para poder ver qual o pedido que esta demorando para ser entregue na mesa do cliente.
valeu...
GOSTEI 0
Bruno Belchior
19/10/2005
correto... mas você poderia colocar aquele código, no caso possuindo um campo (DateTime) da data e hora de pedido, comparando assim a cada minuto... ou a cada repintagem do grid...
GOSTEI 0
Chmelo
19/10/2005
Correto...
Mas nao sei como posso implementar esta rotina para ele poder checar a cada n minutos se o pedido esta ou nao atrasado...
ate +
Mas nao sei como posso implementar esta rotina para ele poder checar a cada n minutos se o pedido esta ou nao atrasado...
ate +
GOSTEI 0
Bruno Belchior
19/10/2005
[quote:a4d46054ea=´Bruno Belchior´]if MinuteOf(Now - DtStHoraPedito.AsDateTime) >= 30 then[/quote:a4d46054ea]Essa linha do código faz isso, compara a data atual (now) com a gravada no DataSet... (DtStHoraPedito)... e verifica se tem até 30 minutos ou mais...
GOSTEI 0
Chmelo
19/10/2005
esta linha voce esta colocando dentro do DBGrid1DrawColumnCell certo ?
Mas como faco para ele atualizar o DBGrid1DrawColumnCell !!!
Tenho que usar o Timer para fazer isto ?
Mas como faco para ele atualizar o DBGrid1DrawColumnCell !!!
Tenho que usar o Timer para fazer isto ?
GOSTEI 0
Bruno Belchior
19/10/2005
Pode ser... dentro do evento OnTimer você chama a seguinte linha...Mas como eu disse anteriormente, acho q nem será necessário, pois só de mover o formulário ou minimizar a aplicação o Grid será repintado...
DBGrid1.Refresh
GOSTEI 0
Chmelo
19/10/2005
Valeu Bruno,
Agora preciso verificar o porque nao esta sendo repintado o grid apos dar o refresh no grid...
OBs.: quando e dado o refresh no grid ele automaticamente executa o comando do DBGrid1DrawColumnCell automaticamente ??
obrigado pela ajuda..
ate +
Agora preciso verificar o porque nao esta sendo repintado o grid apos dar o refresh no grid...
OBs.: quando e dado o refresh no grid ele automaticamente executa o comando do DBGrid1DrawColumnCell automaticamente ??
obrigado pela ajuda..
ate +
GOSTEI 0
Bruno Belchior
19/10/2005
if Column.Field = DtStHoraPedito then begin if MinuteOf(Now - DtStHoraPedito.AsDateTime) >= 30 then begin DBGrid1.Canvas.Font.Color := clBlue; end; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
GOSTEI 0
Chmelo
19/10/2005
Bruno,
Esta funcionando , so que quando o timer e executado ele nao esta conseguindo mudar a cor do grid, mesmo com este novos comandos que voce me paasou...
valeu..
Esta funcionando , so que quando o timer e executado ele nao esta conseguindo mudar a cor do grid, mesmo com este novos comandos que voce me paasou...
valeu..
GOSTEI 0
Bruno Belchior
19/10/2005
A cor do grid realmente não mudará, apenas a cor da fonte... mas depurando a aplicação passou na linha de atribuição de cor?
GOSTEI 0
Chmelo
19/10/2005
Ola Bruno,
O que esta acontecendo e o seguinte:
- Apos dar o tempo no timer a linha que deveria ser pintada nao esta sendo , pois o comando Repaint ou invalidate nao esta funcionando dentro do timer.
Ex.: tenho um horario 19:30:00, o horario do micro marca 20:01:00, gostaria que a cor da celula do grid que esta com o pedido ja atrasado mudasse de cor mas o apos o timer checar nao esta mudando a cor.
valeu ..
O que esta acontecendo e o seguinte:
- Apos dar o tempo no timer a linha que deveria ser pintada nao esta sendo , pois o comando Repaint ou invalidate nao esta funcionando dentro do timer.
Ex.: tenho um horario 19:30:00, o horario do micro marca 20:01:00, gostaria que a cor da celula do grid que esta com o pedido ja atrasado mudasse de cor mas o apos o timer checar nao esta mudando a cor.
valeu ..
GOSTEI 0
Chmelo
19/10/2005
Bruno,
Valeu pelas dicas, esta funcionando legal, o grid nao estava mudando pq
eu nao estava atualizando uma variavel de hora dentro do timer...
obrigado..
ate +
Valeu pelas dicas, esta funcionando legal, o grid nao estava mudando pq
eu nao estava atualizando uma variavel de hora dentro do timer...
obrigado..
ate +
GOSTEI 0