Mello Junior

Members
  • Content count

    52
  • Joined

  • Last visited

  • Days Won

    6

Mello Junior last won the day on March 31

Mello Junior had the most liked content!

Community Reputation

46 Excellent

About Mello Junior

  • Rank
    Aprendiz
  1. Utilizando o comando exeInfo com o argumento exeversion. QUando em modo teste irá trazer a versão do WD que estiver rodando mas rodando no dispositivo trará a informação adequada.
  2. Eu faria algo bem mais simples, quando o EDT ganhar o Foco, você colaca no Caption do botão de consulta "CONS PRODUTOS" e quando o EDT do Cliente ganhar o foco você colocar no Caption "Cons Clientes". Então no botão de consulta você verifica se estiver escrito Clientes ou Produtos. A vantagem dessa técnica é que no caption você prepara o seu usuário para ir exatamente ao que estiver indicado no botão. []´s
  3. Olá, Desde ontem estou brigando com meu celular que insiste em "virar" a foto vinda da câmera. O que pode ser feito para que sai em "portrait"? Muito Obrigado
  4. Olá, Para as compilações do DESKTOP pegamos a versão diretamente escrita no executável e para o mobile, como e onde pegar a versão que escrevemos quando geramos o APK? Muito obrigado
  5. Rogério, Então aproveite a mesma ideia do HARBOUR e ao invés de pensar em uma procedure de cada vez, declare uma classe onde seus atributos automaticamente serão globais para todos os métodos que compuserem a CLASSE. Att
  6. Normalmente o PREVIEW é composto de um ou mais arquivos temporários, que deveriam ser criados dentro da pasta TEMP do usuário. Verifique se por acaso essa pasta não está muito carregada, o que poderia gerar um comportamento igual, veja também se nenhum desses arquivos não estejam com atributos de manipulação negados. Att
  7. Não, pois no Fechamento da Window, você força a atualização do Registro. A sutil diferença está na identificação do autor da operação, logo todos tomarão muito mais cuidado com essa rotina.
  8. Não entendi a sua ideia de "concorrência". Tenho um cliente A sendo alterado no terminal 1 e outro terminal tem a alteração do mesmo cliente. Então os dois leram o endereço antigo, o primeiro terminal vai e altera para um novo endereço e o terminal 2 não vai ter refletida as alterações do terminal 1 em sua tela. Isso é concorrência de Leitura. Diferente de uma transação que quando toda a operação estiver pronta, você abre a transação, processa tudo e libera novamente os arquivo, se alguma coisa der errado todas as informações serão preservadas da maneira como estavam anteriormente. O CLARION tinha um comando muito útil denominado REREAD e automaticamente antes de gravar ele faz um reread e comparava com as informações originais e se estivessem diferentes, abordava o processo avisando que outro usuário alterou aquele registro. A leitura concorrente é para IMPEDIR que haja uma alteração na tabela enquanto outro terminal já esteja alterando. Então, pode-se ter um campo string denominado usuario e escrever ali o nome do usuário que entrou para completar a tarefa. Se o outro terminal tentar ler o mesmo terminal (para alteração do cadastro) e visualizar que o campo está preenchido, o programa avisará que o registro está sendo alterado pelo usuário tal. e quando o primeiro usuário concluir a operação, o programa deve limpar a coluna usuário, deixando assim para que qualquer outro terminal possa acessar aquele registro livremente. []´s
  9. Deixa só eu compreender, você está bloqueando o registro para que o usuário preencha todas as entradas e nesse momento está bloqueando todas as transações do sistema? E se o usuário, aquela pessoa que sempre faz tudo conforme o recomendado, resolver ir tomar um café e lá tiver um AVC, para a empresa? []´s
  10. CR para o Windows é a somatória dos caracteres 13 e 10, mas se o texto for de origem do LINUX será apenas o caractere 10. []´s
  11. Olá, Se quiser trabalhar em uma coisa mais lógica, trabalhe direto na grandeza, por exemplo, se eu quiser somar 90 horas em um datatime: dtFinalDateTime is DateTime = SysDateTime() dtFinalDateTime..Hour += 24 Se quiser trabalhar com minutos, então: dtFinalDateTime is DateTime = SysDateTime() dtFinalDateTime..Minute += 190 //somando 190 minutos para o datatime de forma similar para variáveis do tipo time: tFinalDateTime is Time = Now() tFinalDateTime..Minute += 190 Abs
  12. EU normalmente trato essas tabelas elaborando um HOPEN e capturando um ErrorOccurred(), daí é uma questão de tratar o erro e mandar ver. Fazer de conta que o erro não existe, não é uma boa ideia, contudo você pode trabalhar comandos DDL para tratar e corrigir a tabela em questão. []´s
  13. Em se tratando de arquivo INI é muito simples utilizar os comandos INIREAD e INIWRITE, da mesma forma como a maior parte das linguagens, só lembre que esses comandos apenas manipulam strings, para pegar ou gravar o valor tem de transforma-lo em string antes. Att
  14. Tente usar HTransaction, dá um nível de isolamento melhor, o LOCK ainda não vi funcionar com o PostgreSQL, muito embora em caso de registro concorrente existe alguns subterfúgios, como por exemplo marcar o registro com um determinado número logo que lê e carrega o Form, assim sendo quando for abrir tem de verificar se o determinado campo está zerado se não estiver é sinal de que algum outro terminal já está atuando sobre o registro. Importantíssimo é garantir que zera o arquivo assim que concluir o processo. Att
  15. Olá, Não sei se compreendi bem, mas creio que você já tem um scroll vertical para isso. Att