• advertisement_alt
  • advertisement_alt
  • advertisement_alt

Janio Aguiar

Moderators
  • Content count

    176
  • Joined

  • Last visited

  • Days Won

    22

Janio Aguiar last won the day on April 30

Janio Aguiar had the most liked content!

Community Reputation

113 Excellent

About Janio Aguiar

  • Rank
    Primeiro Sargento
  1. Obrigado pelas soluções, pessoal
  2. Boa tarde, Como fazer um relatório (ligado a uma query) zebrado? Janio
  3. Bom dia, O que fiz foi iniciar um variavel com zero e testar cada hAdd e hModify. Se erro incrementa. Dessa forma eu teria como saber se houve erro em diversos hAdd e ainda desfazer transações, caso ocorram
  4. Dando erro em hAdd, o codigo não deveria ir para o DO do exception?? Nao tá indo
  5. Nao deu, Soledade! O Select abaixo funciona, desde que no banco tenha apenas 1 SAT. Quando é mais de 1, não funciona SELECT a.nrssat, a.cupnum - 1 AS livre, a.datemi FROM a20cfe AS a LEFT JOIN a20cfe AS b ON a.cupnum - 1 = b.cupnum WHERE a.Datemi BETWEEN '20200201' AND '20200220' AND (b.cupnum IS NULL AND a.cupnum > 1)
  6. Boa tarde, Tenho uma situação em que num determinado período de tempo, preciso filtrar os numero faltantes por equipamento SAT. Exemplo: Ou seja, preciso de um SELECT que me retorne: 2315424 193 2315424 196 3656455 102 3656455 106 que são as quebras de cada SAT, entre as datas XX e YY
  7. Boa noite, Cassiano! Da uma olhada no vídeo abaixo. Eh exatamente o que vc precisa
  8. Boa tarde, Para bobinas usar apenas os blocos: - Start Of Document - Body - End Of Document Em "description" do report, na guia "Blocks", em "End of Document" marcar "BEFORE THE PAGE FOOTER BLOCK"
  9. Boa tarde, Obrigado pelo retorno, pessoal! Na verdade a solução é mais simples que eu podia imaginar: - Eh so colocar no evento "KEY DOWN" do EDT o teste da tecla pressionada, e se for F2 desviar para o botao correspondente No evento KEY DOWN do Edt_CodigoCliente IF KeyPressed(VK_F2) THEN ExecuteProcess(BTN_ProcuraCliente,trtClick) END No evento KEY DOWN do Edt_CodigoVendedor IF KeyPressed(VK_F2) THEN ExecuteProcess(BTN_ProcuraVendedor,trtClick) END
  10. Boa tarde, Rinaldo! Entendi, mas no meu caso os controles estarão na mesma janela, entendeu? Na mesma janela haverá 2 botoes. Um busca cliente, o outro busca vendedores. Mas os 2 botões com a mesma tecla de atalho (F2) Eu acho que preciso saber qual controle o foco está. Quando foco estiver no edt de cliente, f2 direciona pro botao de procura cliente. Quando o foco estiver no edt do vendedor, f2 direciona pro botao de procura vendedor.
  11. Bom dia, Em um formulário preciso atribuir o mesmo atalho (F2) como atalho para diferentes botões. Exemplo: - Estando no EDT do codigo do cliente, F2 servir como atalho para o botão PROCURA CLIENTE - Estando no EDT do codigo do vendedor, F2 servir como atalho para o botão PROCURA VENDEDOR Tem como?
  12. PROCEDURE Iif(Condicao is boolean, Resultado_True, Resultado_False) IF Condicao THEN RESULT Resultado_True ELSE RESULT Resultado_False END
  13. Hummmm Pelas msg que ele deu, o danado ta nos dizendo que essa abordagem que estamos fazendo nao é a recomendável. O bicho eh sabido mesmo hehehe Nesse caso eu partiria pra algo do tipo: 1- Deixa a thread rodando perfeito e fazendo o que tem que fazer como ja está 2- Quando vc estiver com a bendita window aberta, vc colocaria um timer executando uma função que vc deseja. Nesse timer vc chama uma função e nela faz o processo e dar ou não o refresh no looper, a depender as condições que vc estabelecer É uma ideia... No exemplo da imagem: 1 - Paro o time 2 - Executo a função 3 - Ligo o timer de novo com o tempo que estabeleci (no caso eh 120segundos) 4 - A cada 120 segundos essa função eh executada Num sistema desktop ta funcionando perfeito. Pra mobile ja nao sei...
  14. Função para retornar quantidade de meses entre duas datas. Contribuição do nosso colega Rinaldo PROCEDURE NumeroMeses(LOCAL dParametroDataInicial, LOCAL dParametroDataFinal) dDataInicial is Date = dParametroDataInicial dDataFinal is Date = dParametroDataFinal nContador is int = 0 WHILE dDataInicial <> "" AND dDataInicial < dDataFinal dDataInicial..Month++ nContador += iif(dDataInicial <= dDataFinal, 1, 0) END RESULT nContador
  15. Bom, se a procedure vai ficar rodando la de tempos em tempos e vc precisa dar um refresh num looper, tenha em mente que esse looper está numa window (janela). A pergunta eh: essa window estará sempre aberta para que no momento que a procedure rodar vc poder dar o refresh no looper? Imagino que ao final da propria procedure vc pode fazer essa verificação e dar o refresh no looper, caso necessário. 1. Verifica se a janela está aberta. 2. Está? entao da o refresh no lopper. LooperDisplay(NomeWindow.NomeLooper) https://help.windev.com/?3038030