Usuário com melhor resposta
Duvidas com datas....

Pergunta
-
Olá mestres, alguém pode me dar uma orientação quanto a este procedimento? É o seguinte, tenho uma matriz que nomeei-a assim:
Dim data(2500) As String
Depois eu populei esta matriz assim:
data(1)=25/09/53, data(2)=15/11/20.... ( vai até: data(2071)=26/03/13 )
Vejam, sei que eu deveria ter feito assim: data(1)="25/09/53", data(2)="15/11/20" ou seja, entre aspas, mas eu não consegui porque puxei estes dados de uma planilha, e são 2071, se fossem até uns 500, eu teria paciência e colocaria aspas em todas as datas deixando-as como string
continuando:
Depois estes dados vão para um arquivo txt, assim:
Dim W As IO.StreamWriter 'cria a variável W para o endereço de salvar
If IO.Directory.Exists("C:\Usuario\Home") = False Then IO.Directory.CreateDirectory("C:\Usuario\Home")
If IO.File.Exists("C:\Usuario\Home\durval.txt") = False Then File.AppendAllText("C:\Usuario\Home\durval.txt", "")
W = New IO.StreamWriter("C:\Usuario\Home\durval.txt")
For v = 1 To 2071
W.WriteLine(data(v)
Next
W.Close()Agora então, onde estou pedindo a informação?
Uma vez salva no arquivo .txt, a data perde o formato de data (25/09/53) e vira o resultado de uma divisão tipo 0,002535343 ou coisa parecida.
A minha pergunta é:
Tem como contornar isso para que esta data vá para o arquivo .txt com o formato de data como eu quero?
Caso contrário eu tenho que mudar as 2071 datas, vou passar uma semana mudando o que está assim: 25/09/53 para "25/09/53". Então por favor, se alguém sabe uma forma de contornar esse problema, me ajude por favor.
Grato / Durval
Respostas
-
Bom dia.
Você não está com Option Strict ativo?
Testei aqui e nem aceita.
MARIANO1776
- Marcado como Resposta Durval Teixeira sexta-feira, 6 de novembro de 2020 20:01
-
A Option Strict deve estar sempre ativa, é o aconselhável.
O estranho é não ter apresentado o erro para você, aceitando digitar como string.
Aguardemos os mestres, não tenho sugestão para este caso, a não ser redigitar com aspas.
MARIANO1776
- Marcado como Resposta Durval Teixeira terça-feira, 3 de novembro de 2020 19:41
-
Muito bom.
MARIANO1776
- Marcado como Resposta Durval Teixeira sexta-feira, 6 de novembro de 2020 20:00
Todas as Respostas
-
-
Olá Mariano, estou populando a matriz data(), assim:
Fiz: Dim data(1500) As String
depois:
data(1)=25/09/53
data(2)=15/11/20
Isto porque puxei (copiei & colei) da planilha do Excell.
Como escrevi antes, sei que deveria estar fazendo assim:
data(1)="25/09/53"
data(2)="15/11/20" com as aspas, inclusive por experiência fiz umas 10, e dai dá certo, só que são 2071, ai vou ter que passar uma semana colocando aspas nas 2071 datas.
Acredito que deve ter uma forma de declarar a matriz para que dê certo, mas não sei como seria essa declaração.
-
Bom dia.
Você não está com Option Strict ativo?
Testei aqui e nem aceita.
MARIANO1776
- Marcado como Resposta Durval Teixeira sexta-feira, 6 de novembro de 2020 20:01
-
Olá Mariano.
Confesso que ainda estou meio confuso. Se desativar o Option Strict dará certo, é isso?
Veja, coloquei o Option Strict como off e rodei. O resultado continua o mesmo.
Veja o que acontece, se colocar a data entre aspas, o resultado no arquivo .txt sai do jeito que eu quero.
data(1) = "29/09/2003"
data(2) = "06/10/2003"
data(3) = "13/10/2003"
data(4) = "20/10/2003"e deixei essas 3 assim:
data(5) = 27 / 10 / 2003
data(6) = 3 / 11 / 2003
data(7) = 10 / 11 / 2003O resultado no arquivo .txt é esse:
29/09/2003
06/10/2003
13/10/2003
20/10/2003
0,00134797803295057
0,000136159397267735
0,000453864657559116
-
A Option Strict deve estar sempre ativa, é o aconselhável.
O estranho é não ter apresentado o erro para você, aceitando digitar como string.
Aguardemos os mestres, não tenho sugestão para este caso, a não ser redigitar com aspas.
MARIANO1776
- Marcado como Resposta Durval Teixeira terça-feira, 3 de novembro de 2020 19:41
-
-
Mariano, pode ser que você nunca vá precisar disso, mas só para conhecimento, veja que legal.
Consultei um amigo que trabalhamos juntos na COPEL, ambos aposentados hoje, ele sempre manjou bem de EXCELL, e em poucos minutos me mandou essa solução no EXCELL.
1-Seleciona uma célula vazia ao lado da célula que contém a data nesse formato: 29/09/19 no meu caso essa célula é a B1
2-Ai monta essa fórmula: =CARACT(34)&TEXTO(B1;"DD/MM/AA")&CARACT(34)
3-Ai é só arrastar que essa fórmula vai copiando as datas que estão em B1 e passando para as células da coluna C (por exemplo). Na coluna C, então as datas vão ficando assim: "29/09/19" com as aspas.
CARACT(34) é o código das aspas. Ficou moleza. Agora deu certo, fechou as 2071 datas.
Essa foi a primeira etapa daquilo que estou querendo fazer. Agora já tenho um arquivo com 2071 linhas nomeado como resultadosLotoFacil. Ele ficou assim:
000001 29/09/03 02 03 05 06 09 10 11 13 14 16 18 20 23 24 25 2.320.460
000002 06/10/03 01 04 05 06 07 09 11 12 13 15 16 19 20 23 24 1.672.792
000003 13/10/03 01 04 06 07 08 09 10 11 12 14 16 17 20 23 24 1.768.502
000004 20/10/03 01 02 04 05 08 10 12 13 16 17 18 19 23 24 25 797.917
000005 27/10/03 01 02 04 08 09 11 12 13 15 16 19 20 23 24 25 927.594
000006 03/11/03 01 02 04 05 06 07 10 12 15 16 17 19 21 23 25 688.694
000007 10/11/03 01 04 07 08 10 12 14 15 16 18 19 21 22 23 25 1.828.417
000008 17/11/03 01 05 06 08 09 10 13 15 16 17 18 19 20 22 25 1.881.427vai até o 2071, eu só estava encalhado nessa data. Esse número no final, é o número da combinação 25C15. Agora a próxima etapa do APP será uma rotina que vai consultar este arquivo. No APP o usuário vai selecionar de 1 a 10 dezenas e perguntar em qual resultado aquelas dezenas que ele selecionou saíram juntas. O resultado dessa pesquisa sairá num dataGridView. Ai já te pergunto, será que é muito complicada uma rotina que faça isso? Vou tentar, lembro que você me deu ótimas informações sobre a manipulação de arquivos.
-
Muito bom.
MARIANO1776
- Marcado como Resposta Durval Teixeira sexta-feira, 6 de novembro de 2020 20:00