Facilidade de soluções e -w3 -es2

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Facilidade de soluções e -w3 -es2

Mensagem por JoséQuintas »

Tem horas que eu mesmo me espanto com facilidade em soluções.
E compilando com -w3 -es2... facilita muito mais.

Problema:

tem lá a rotina que cria e pode enviar por email os XMLs de um mês
Agora foi necessário gerar de 2016 a 2018, 36 meses....
Como separar por mês?

Bom... vamos lá...

GET dDatIni
GET dDatFim
...
rotina que gera

passo 1:
Separei a rotina que gera

FUNCTION GeraDados( dDatIni, dDatFim )

E compilando com -w3 -es2, ajustei as variáveis, pra deixar no lugar certo.
Desta forma, a sub-rotina passou a gerar qualquer intervalo que eu queira

Agora só restou passar as datas pra rotina, e nada mais.

Solução relativamente simples:

Código: Selecionar todos

dSubDatIni := dDatIni
DO WHILE dSubDatIni < dDatFim
   dDatSubFim := Min( UltDia( dSubDatIni ), dDatFim )
   GeraDados( dSubDatIni, dSubDatFim )
   dDatSubIni := UltDia( dDatSubIni ) + 1
ENDDO
Pronto, problema resolvido.

explicando....

A data inicial se mantém...
A data final pode ser o último dia do mês da data inicial, ou a data final digitada, a menor das duas
Exemplo: de 1/5 a 10/5 ou 1/5 a 31/5
Pronto... isso resolve pra ter as datas limites do primeiro mês

O próximo mês: será o último dia desse primeiro mês, somando um.
Exemplo: se é 1/5... o último dia será 31/5, que somado um é 1/6
E volta a repetir o anterior, até que esse primeiro dia seja maior do que o limite digitado.

Um problema que à primeira vista seria complexo, resolvido com poucas linhas.

E lógico... compilando com -w3 -es2, que avisa sobre variáveis, facilitou evitar erros na separação da rotina, foi só criar as variáveis necessárias, ou passar por parâmetro se necessário.

A intenção é mostrar aqui o seguinte:

1. Compilando com -w3 -es2 ajuda muito, porque mexe sem medo, e evita erros
2. Pensando em melhorar rotinas, sobra tempo pra pensar em rotinas melhores.
3. Resultado final: rotinas melhores, menos trabalho, e soluções mais rápidas

Às vezes até compensa fazer pausas, pensar um pouco, tomar café, jogar asteroyds, voltar a pensar, jogar mais asteroyds, e depois alterar.
Vai gastar o mesmo tempo, mas fazer muito mais tranquilo.

Agora gerando....
gera1.png
gera2.png

Conferidos os meses já gerados, tempo pra jogar mais asteroyds, ou postar no fórum, ou melhorar mais coisas, ou tomar café, ou relaxar um pouco, ou partir pra próxima tarefa... tudo tranquilo.

Nota: São todos os XMLs emitidos e recebidos em 3 anos, por isso demora um pouquinho, talvez alguns gigas...
O nome dos arquivos.... CNPJ-ano/mês.zip... mais simples impossível.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Facilidade de soluções e -w3 -es2

Mensagem por JoséQuintas »

gera2.png
gera2.png (4.62 KiB) Exibido 864 vezes
Aproveitando....

Esse arquivo é o backup dos dados...
É um aplicativo de meu uso, JPA Tecnologia é minha empresa.

Alguma dúvida sobre o arquivo ser de JPA Tecnologia, ser backup, e ter sido feito nessa data?
Nome simples, não precisa nada especial pra saber do que se trata.

E se eu misturar tudo que é backup, de vários clientes, etc....
tem lá nome da empresa, data e hora. Ficando tudo na mesma pasta, nada está misturado.

Antigamente meus backups de fontes eram assim também.
Fica prático, não precisa ficar inventando nomes, e fica fácil pra localizar depois.
No caso dos fontes, chamava de FONTES-anomesdia-hora.zip
Tudo organizado, sem precisar organizar kkkk

Serve como sugestão pra vocês, caso ainda não façam assim.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Facilidade de soluções e -w3 -es2

Mensagem por JoséQuintas »

Minha pasta com tudo junto, só pra mostrar como fica:
backup.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Facilidade de soluções e -w3 -es2

Mensagem por JoséQuintas »

Aonde está o backup da empresa tal.... na pasta de backup.
Vou testar a empresa tal... descompacto o backup e faço o teste.
Espalhar coisas no HD pra que? pra depois ficar procurando?

É o que eu digo: organizar o trabalho, simplifica tudo, tem muita coisa que pode ser organizada.
anos depois.... tá lá na pasta backup, o zip da empresa... não esquece nunca aonde está, passou a fazer parte do dia a dia, mesmo que demore anos pra usar.

Também uso esse esquema no cliente, também para o MySQL, e tudo mais, funcionou - é usar sempre e pronto.

Também serve, numa olhada rápida, pra ver se o backup está menor, o que pode indicar perda de informações ou backup incompleto - pode acontecer isso, nunca se sabe.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder