DESCOBRIR QUAL DATA FALTA DATAGRID

ALTAIR148 08/02/2012 09:58:07
#394253
Bom dia,

Pessoal, estou com uma dúvida aqui, tenho um datagrid que nele tem tem uma coluna com datas, por exemplo, no meu form eu coloco 02/2012, ai eu gero o datagrid com todos os dias de fevereiro de 2012, até ai tudo bem... Só que as vezes pode ser que seja necessário excluir alguma linha, e eu gostaria de poder fazer uma verificação e saber a data da linha que foi excluida, outra coisa é que uma mesma data pode se repetir também. Exemplo.:

01/02/2012
02/02/2012
02/02/2012
Não tem 03/02/2012
04/02/2012
05/02/2012
06/02/2012
06/02/2012
....
....

Aí neste caso eu gostaria de ser avisado que falta o dia 03/02/2012, alguém tem idéia de como fazer?
KERPLUNK 08/02/2012 10:09:34
#394254
Faça uma seleção distinta. Some os valores dos DIAS que aparecem na lista. Verifique o valor da soma com a progressão aritmética tendo o primeiro e o último dia do mês como base. Se a soma não bater, subtraia o valor dessa soma da constante de progressão que deveria ser. Exemplo:
Sua matriz de dados(dias):
1
2
3
4
...
10
A soma dessa progressão é 55(1+2+3+4...10=55)
Se a soma dos dias da seleção distinta que vc fez der tipo 53, subtraia 55-53, vc vai ter exatamente o dia que está faltando.
Esse é o método mais correto de se fazer isso, pois funciona muito rápido mesmo para matrizes de dados bem longas. A alternativa seria fazer um loop....
ALTAIR148 08/02/2012 10:16:49
#394257
Boa KERPLUNK, adorei a idéia, mas ai têm os poréns, dessa forma ai ví aqui que funcionaria perfeitamente, mas pelo que entendi o seu exemplo dá para verificar se estiver faltando apenas um dia, e no meu caso aqui pode acontecer de faltar vários dias.
KERPLUNK 08/02/2012 10:24:47
#394259
Bem, digamos que a soma do seus dias, seja 50. Isso quer dizer:
Ou falta o dia 5 ou faltam os dias 2 e 3, certo?
Bem, vc sabe que essa matriz de dias, vai ter um determinado número de ítens; Se esse número de ítens tiver um dia a menos que o número de ítens esperado, é exatamente o dia que falta aquela subtração. Se tiver mais de um ítem faltando, crie uma matriz que contenha todos os ítens e faça um loop na matriz de dias e na matriz que vc criou(contendo todos os dias esperados). Quando falta mais de um, não existe um cálculo(pelo menos não um simples) de se verificar quais ítens faltam, pois pode ser uma sequencia de vários ítens espalhados pela matriz.
KERPLUNK 08/02/2012 10:47:53
#394262
Claro, que esse loop, pode ser feito no SQL mesmo, mais ou menos assim:
DECLARE @RETURN TABLE( ID Int); DECLARE @I INT; SET @I = 0; WHILE @I < (SELECT MAX(CODIGO) FROM SUA_TABELA) BEGIN SET @I = @I + 1; INSERT INTO @RETURN (ID) VALUES (@I); END SELECT ID FROM @RETURN AS RETORNO WHERE RETORNO.ID NOT IN (SELECT CODIGO FROM SUA_TABELA)

Isso retornará uma lista de valores que não estão na lista de datas...
ALTAIR148 08/02/2012 10:57:23
#394264
Valeu ai... Vou tentar aqui e qualquer dúvida lhe retorno...

Obrigado....
ALTAIR148 08/02/2012 14:03:08
#394283
Pensei em algo aqui...

Não teria como por exemplo pegar o dia [Ô]01/02/2012[Ô] e percorrer todo o datagrid procurando ele, se tiver fica tudo bem e se ele não encontrar ele retorna avisando que não encontrou em todas as linhas do datagrid.

Sei que será um loop um pouco grande, mas acho que ficaria mais fácil.
KERPLUNK 08/02/2012 14:10:59
#394284
Com certeza tem como fazer assim sim. Mas melhor ainda, seria antes de preencher o grid, verificar tudo que se queira verificar. Grid, não é fonte de dados, é somente um visualizador.
ALTAIR148 08/02/2012 14:16:23
#394285
Citação:

Grid, não é fonte de dados, é somente um visualizador.



Aí entendi, o que acontece é que essa verificação seria antes de gravar os dados que estão sendo mostrados no datagrid.
KERPLUNK 08/02/2012 14:23:06
#394286
Então, use uma coleção de objetos que contenham essas datas, e não percorrer o grid...
ALTAIR148 08/02/2012 14:26:57
#394287
Desculpe minha ignorância, mas não entendi direito.
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas