|
Inicio → WINDEV 25 → WX - Rotina de autonumeraçao e desabilitar botao apos salvar |
WX - Rotina de autonumeraçao e desabilitar botao apos salvar |
Iniciado por BOLLER ADRIANO, ago., 10 2016 11:54 PM - 2 respostas |
| |
| | | |
|
| |
Membro registado 3.659 mensagems Popularité : +175 (223 votes) |
|
Publicado em agosto, 10 2016 - 11:54 PM |
Prezados,
Rotina de auto numeração e desabilitar botão após salvar
botão Salvar, após salvar o registro, insira o código para desabilitar o botão:
Código:
BTN_SALVAR..State = Grayed
E quando o conteúdo de algum campo for alterado, habilite novamente o botão de salvar:
Código Whenever Modified of EDT_NOME
BNT_SALVAR..State = Active
Para auto numeração, faça o seguinte:
Procedure proximonumero() HReadLast(nomedatabela,codigo) RESULT= nomedatabela + 1
Pronto, cria essa função em local procedures e quando clicar no botão novo ou em algum outro evento que desejar, vc coloca assim:
nomedocampo..value = proximonumero()
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membro registado 212 mensagems Popularité : +25 (25 votes) |
|
Publicado em agosto, 11 2016 - 2:09 AM |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.659 mensagems Popularité : +175 (223 votes) |
|
Publicado em agosto, 11 2016 - 1:23 PM |
Prezado André,
Pensamos num ambiente bem hostil, concorrência de rede e dados de tabela sendo usado por um Callcenter e por um setor financeiro ao mesmo tempo e constantemente.
Nesse tipo de situação é no salvar que você deve colocar o id ao registro num processo atômico. Ao dar novo o campo chave deve estar em branco ou nem exibido na tela e somente após preencher tudo no botão salvar verificar o registro livre dar lock, gravar, deslock e fechar a tela.
Pensamos num outro tipo de documento com cabeçalho e itens, uma nota ou um pedido, numa situação que o usuário pode digitar um item ou milhares de itens.
Nessa situação é necessário fazer um check se digitou tudo ok e ainda tem a situação de queda de energia e abandono do seu local de trabalho para tomar um café, ida ao banheiro ou reunião urgente.
Quando o usuário voltar mesmo tendo abandonado a estação de trabalho e mesmo tendo ocorrido uma queda de energia, ao voltar deve partir do momento que parou, isso é assim no MS Office e nós como programadores devemos fazer. É isso que encanta o cliente, não perder trabalho e tempo usando o seu sistema, ele vai elogiar o teu trabalho.
Para atender essa situação, vc deve ter uma tabela de pré-pedido e pré-itens com uma coluna de validado/checado/processado. Deve gravar os itens numa tela e só depois de ter o seu código único garantido em rede e testado, você libera a digitação de cada item e salva. Nesse momento apenas faz checagens mas não ocorre movimentações de estoque, nem financeiro.
Assim você tem o cabeçalho gravado e os itens. Após validar toda a sua digitação nessa tela o usuário vai marcar [x] um ou vários pré-pedidos e executaria só então o processamento do pré-pedido para o pedido de forma atômica usando transaction com teste de cada select, insert, update e se um deles tiver algum retorno invalido ou alguma regra de negocio não atendida, no erro ROLLBACK e se tudo ok COMMIT, após deve por obrigação passar para o usuário em qual momento foi cancelado via mensagem, nessa ordem, pois se colocar a mensagem antes do ROLLBACK e do COMMIT ocorre o bloqueio da transação e o bloqueio de dados na rede.
Os comandos nesse processamento deve ter consultas instantâneas validadas e testadas na tabela real ou uso de views só com as colunas necessárias que transitaram na rede, sendo a view a sua grande aliada, pois num processamento transaction na rede, o fluxo de dados deve ser sempre analisado: Eu devo trazer todas as colunas e todas as linhas da tabela para o usuário agora? Essa é a pergunta mágica, tem como eu mandar só o que ele vai usar agora? Se sim View com where, se não Select normal com where.
Tudo ok, o seu pré-pedido "Aberto" muda para "Fechado" e esta criado o Pedido e itens validados no seu sistema com o seu código único.
Uma sugestão para evitar bloqueios no pré-pedido é usar 3 letras do usuário e um sequencial, exemplo: ADR-0000000010, faça testes em rede.
Se o contador for controlado no cadastro do usuário em um campo CONTADOR, jamais vai dar erro e nunca vai ter furo na sequencia.
Espero que tenha respondido a sua dúvida, Eu faria assim, tenho certeza nunca terei problemas usando o sequencial no cadastro do usuário.
Forte abraço e bons estudos meu amigo.
Precisando é só me chamar no SKYPE adrianoboller
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
|