none
Duvidas com datas.... RRS feed

  • 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

     
    segunda-feira, 2 de novembro de 2020 21:23

Respostas

Todas as Respostas

  • Boa noite.

    Como você está carregando as datas?

    For v = 1 To 2071

    data(v) = ???

             Next


    MARIANO1776

    segunda-feira, 2 de novembro de 2020 22:30
  • 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.

    terça-feira, 3 de novembro de 2020 00:55
  • 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
    terça-feira, 3 de novembro de 2020 11:04
  • 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 / 2003

    O resultado no arquivo .txt é esse:

     29/09/2003  
     06/10/2003  
     13/10/2003 
     20/10/2003  
     0,00134797803295057  
     0,000136159397267735  
     0,000453864657559116  


    terça-feira, 3 de novembro de 2020 18:44
  • 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
    terça-feira, 3 de novembro de 2020 18:51
  • Valeu, obrigado pela atenção Mariano.

    Estou tentando fazer uma rotina em VBA no Excell que coloque as aspas nas 2071 datas, mas por enquanto ainda não consegui.

    Abraço

    terça-feira, 3 de novembro de 2020 19:46
  • 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.427

    vai 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. 

     

    quarta-feira, 4 de novembro de 2020 01:41
  • Muito bom.

    MARIANO1776

    • Marcado como Resposta Durval Teixeira sexta-feira, 6 de novembro de 2020 20:00
    sexta-feira, 6 de novembro de 2020 11:46