MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    [Resolvido]Gerar números aleatórios com validação

    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty [Resolvido]Gerar números aleatórios com validação

    Mensagem  vileman 14/4/2015, 18:04

    Olá a todos. Após buscas nesse site não consegui o que desejava, então pediria ajuda de vocês novamente para o seguinte:
    * Utilizo o Access 2003

    Rotina para gerar quantidade x de números aleatórios sem repetição com 6 dígitos + código de validação com 4 letras, sem repetição desses números e letras gerados.

    Explicando:
    Gerar quantidade de: 10, 40, 25, 50, 100, 1000, 10000 ou qualquer outra quantidade - sem repetição até o limite de 999.999 - para posterior verificação através do código de  validação com 4 letras, como se fossem dígitos verificadores.
    Cada código gerado após confirmada sua validade não mais poderá ser validado.

    Exemplo: Foi gerado o número 006463 com as letras BGTY, então o código ficaria assim: 006463-BGTY
    Em um formulário seria digitado esse código para ser validado e que após verificado se existe na BD, o mesmo seria tido como Validado.
    Caso fosse novamente digitado para validação, seria informado que o mesmo já está validado e não pode mais ser utilizado.

    Espero tenham entendido a forma como expliquei, senão vamos aos poucos esclarecendo melhor.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Gerar números aleatórios com validação Empty Re: [Resolvido]Gerar números aleatórios com validação

    Mensagem  Avelino Sampaio 16/4/2015, 19:52

    Olá!

    Veja se este meu artigo pode te oferecer algumas ideias:

    http://www.usandoaccess.com.br/tutoriais/sons-no-access-bingo.asp?id=1#inicio

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 20/4/2015, 16:45

    Caro Avelino, agradeço a atenção e a dica, mas é que já havia visto esse seu exemplo e outros, mas não consegui adaptar para o que desejo, visto que minha experiência em VBA é muito pouca, porisso ainda não consigo desenvolver tal rotina sozinho, tipo onde colocar tais comandos, como começar, etc. entende?

    Esqueci de acrescentar um detalhe no número a ser gerado: Tenho um cadastro de empresas que por sua vez tem um código sequencial de autonumeração (CodEmpresa) que seria acrescentado ao número gerado aleatoriamente dentro de um intervalo inicial e final, para isso gerando a cada vez um Lote de x registros sequenciais.

    Exemplo 1: Código da empresa 099. No formulário pede para gerar o 1º Lote com 05 números aleatórios sem repetição, nesse caso os registros poderiam ficar assim:
    registro 1: 099.000005-VFCE
    registro 2: 099.000003-VIOP
    registro 3: 099.000001-QTYI
    registro 4: 099.000002-KITV
    registro 5: 099.000004-MJUY

    Na próxima vez que no cadastro dessa mesma empresa pedir para gerar 20 números começaria a geração do 2º Lote a partir do registro nº 6 até 25 de forma aleatória e sem repetição, e com rotina de validação de cada um desses números gerados, posteriormente, conforme instruções iniciais.

    Exemplo 2: Código da empresa 100. No formulário pede para gerar o 1º Lote com 05 números aleatórios sem repetição, nesse caso os registros poderiam ficar assim:
    registro 1: 100.000004-RTYE
    registro 2: 100.000002-VDEY
    registro 3: 100.000003-VTYW
    registro 4: 100.000005-BGTY
    registro 5: 100.000001-QRTV

    Na próxima vez que no cadastro dessa mesma empresa pedir para gerar 10 números começaria a geração do 2º Lote a partir do registro nº 6 até 15 de forma aleatória e sem repetição, e com rotina de validação de cada um desses números gerados, posteriormente, conforme instruções iniciais.

    Em resumo: Gerar uma quantidade x de números aleatórios por empresa, onde esses números seriam não-sequenciais e sem repetição dentro de um Lote com intervalo inicial e final com 4 letras como dígitos verificadores, para posterior impressão desses códigos gerados e verificação de validação no próprio formulário.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 22/4/2015, 17:50

    Olá vileman,

    Vou deixar por algum tempo esta função para você testar.

    Código preservado devido a meus direitos autorais. Este código e outros mais interessantes estarão publicados em ebook em breve.


    Última edição por good guy em 24/4/2015, 17:20, editado 1 vez(es)
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 23/4/2015, 13:48

    Bom dia, Good guy

    Valeu, vou testar e depois posto o resultado.

    Muita Paz
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 24/4/2015, 16:58

    Caro colega, Good Guy, como vai?

    Fiz o seguinte para tentar conseguir executar a rotina:

    1. A rotina consiste em:
       a. Cadastrar Empresas;
       b. A partir de pedidos feitos por uma Empresa, gerar a quantidade de Cupons solicitada para serem impressos com a numeração gerada com Intervalo inicial e final em um Lote (ou outra  forma), e depois entreguees para a Empresa solicitante, que por sua vez distribui com seus clientes;
       c. O cliente de posse desse Cupom numerado vai até uma filial da Empresa e apresenta o mesmo, que é conferido pelo Sistema para validar ou não o mesmo: Caso o mesmo seja validado, ou seja, verificada e confirmada a codificação gerada pela rotina, o mesmo é aceito pela Empresa em suas filiais, e dado baixa no formulário, havendo o travamento desse registro; caso contrário emite uma mensagem informando que o Cupom é válido, mas já foi utilizado e não tem mais validade, ou que a numeração é inválida, e portanto, este Cupom não pode ser utilizado, conforme o caso. Em sendo validado, o campo ‘ValidacaoSN’ da tabela ‘T081_Cupons’ será automaticamente atualizado para Sim (0), para esse Cupom, e não mais poderá ser utilizado em outra filial;
    d. Ver exemplos na mensagem nº 3 deste tópico.

    2. Já havia criado a tabela “T08_Empresas” com os campos:
       a. CodEmpresa. Tipo: Autonumeração. Chave primária
       b. RazaoSocial. Tipo: Texto. Tamanho: 255
       c. CNPJ_CPF. Tipo: Texto. Tamanho: 14
      d. DataCadastro. Tipo: Data/Hora
       ... mais outros campos correlatos

    3. Criei a tabela “T081_Cupons” com os campos:
       a. CodCupom. Tipo: Autonumeração. Chave primária
       b. IDEmpresa. Tipo: Número. Inteiro longo
       c. NumLote. Tipo: Texto. Tamanho: 6
       d. ValidacaoSN. Tipo: Sim/Não. Valor Padrão: 0 (Não). (S: Sim Validado. N: Não Validado)
       e. CampoSerie. Tipo: Texto. Tamanho: 13. Máscara: 000.000000-AAAA
       f. ValorInicial. Texto. Tamanho: 6
       g. ValorFinal. Texto. Tamanho: 6

    4. Criei o Relacionamento para as 2 tabelas entre os campos: ‘CodEmpresa’ e ‘IDEmpresa’ sendo: um-para-vários, respectivamente.

    5. Criei um Formulário: “F08_Empresas” = para cadastrar as Empresas

    6. Criei um Subformulário: “F081_Cupons” vinculado ao “F08_Empresas” = para gerar os vários pedidos dos Cupons da Empresa com numeração aleatória e sem repetição com intervalos inicial e final dentro de um Lote para posterior validação, conforme texto acima.
    Neste subformulário:
    6.1) copiei sua rotina ”Function CriarSequencia”
    6.2) criei o botão “cmdGerar”
    6.3) no campo ‘CampoSerie’ no evento “após atualizar” copiei sua rotina, alterando apenas 2 linhas:
        a. Set rstMinhaTabela = db.OpenRecordset("T081_Cupons", dbOpenDynaset) * Nome da minha tabela
         b. sSerie = Forms!F081_Cupons!CampoSerie                                               * Nome do meu formulário

    Resultado: Ao clicar no botão “cmdGerar” nada acontece, nem mesmo nenhum tipo de erro quando faço a compilação ou depuração.
    Testei este botão em ‘Detalhe’ e no Rodapé do subformulário, mas o resultado é o mesmo. Estou enviando em anexo o arquivo, caso deseje analisar melhor.
    Muita Paz.

    PS: Ao tentar anexar o arquivo deu a mensagem: "Os seguintes erros foram encontrados
    Não é possível enviar o arquivo : o espaço total de armazenamento foi ultrapassado. (Espaço restante : 2161 Kb)
    No entanto, meu arquivo zipado está com 2,25 Mb, enquanto que no site informa que o tamanho máximo é de 2,998 Mb, então se quiser posso enviar para seu e-mail.
    Fico no aguardo de seu retorno.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 24/4/2015, 17:12

    Olá Vileman,

    Posta pelo dropbox que é o recomendado aqui no fórum. A dúvida precisa estar aberta para todos.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 24/4/2015, 17:59

    Como faço para enviar pelo Dropbox, pode dizer o passo-a-passo ?
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 24/4/2015, 18:13

    Caro colega, se não for pedir demais, poderia enviar para mim o arquivo que baixa o dropbox, pois tentei aqui no trabalho e o firewall está bloqueando, e na minha residência estou sem internet.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 24/4/2015, 18:20

    Olá vileman,

    Faça seu registro aqui e siga as instruções.

    https://www.dropbox.com/
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 24/4/2015, 18:45

    Obrigado, acho que consegui, vejam um dos links abaixo:

    https://www.dropbox.com/s/ndwb4c47tbbu921/Aleatorios.zip?dl=0

    https://dl.dropboxusercontent.com/u/43719372/Aleatorios.zip
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 24/4/2015, 22:10

    Olá vileman,

    Desenvolvi uma solução, mas não consegui compartilhar pelo computador de serviço. Vou fazê-lo do meu computador doméstico. Por favor aguarde...

    Teste aí:

    http://www.4shared.com/rar/xjr-XJAPba/Aleatorios.html?
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 27/4/2015, 14:46

    Olá Good guy

    Ao clicar no link aparece a mensagem de erro

    Não é possível exibir está página
    Verifique se o endereço da web http:4shares.com.br está correto

    PS: também aparece a mesma mensagem quando envio essa resposta pelo site, então consegui enviar pelo meu Iphone agora
    PS2: Agora consigo enviar mensagem pelo site, vai entender, mas o link continua com a mesma mensagem de erro.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 27/4/2015, 15:59

    Olá vileman,

    Não encontrei nenhum erro no link ao clicar pelo site MáximoAccess. Temporariamente, faça o seguinte forneça o seu email que postarei o arquivo. Depois se houver problemas ou estiver tudo ok, poste o mesmo pelo dropbox.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 27/4/2015, 16:37

    Oi, Good guy

    E-mail: vileman@hotmail.com

    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 27/4/2015, 19:16

    Ok, enviado.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 28/4/2015, 15:10

    Olá, Good guy

    Recebido, vou fazer os testes e depois posto os resultados.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 28/4/2015, 17:55

    Olá, Good guy

    Após testes:

    A) Acho que eu que não me expliquei da forma correta com relação a rotina pretendida, pois antes de testar observei que:
    A tabela “tblSelecao” estava com os registros assim:
    tblSelecao
    CodCupom IDEmpresa IDVendedor NumLote ValidacaoSN CampoSerie ValorInicial ValorFinal
    2-BLAB          0                 0              16              0                                  1            5
    1-QQAQ         0                 0              17              0                                  1            5
    3-BAQA          0                0              18              0                                  1             3
    5-AQLB          0                 0             19              0                                   6           10
    6-LLAL           0                 0             20              0                                   1             7
    5-AQLB          0                 0             19              0                                   6           10
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    • 6 registros com dados
    • 10 registros sem dados ??
    • Dados entre as Tabelas “T081_Cupons” e “tblSelecao” não deveriam ser iguais ??

    A Tabela “T081_Cupons” tem 02 registros com os códigos: ‘1-BAQN’ e ‘2-QQLN’ no campo 'CodCupom'; e ao testar clicando no botão: 'cmdGerar' no formulário: “F08_Empresas” mostrou os seguintes códigos dentro dos intervalos inicial e final (1 a 5):
    2-NNBB
    1-QAAB
    5-LQLA
    2-QLBL
    3-ALQB

    Em seguida aparece uma InputBox: ("Digite o código: "), então – sem haver entendido e para testar – digitei um dos códigos gerados acima: ‘2-QLBL’, que apenas substituiu o código ‘1-BAQN’, na tabela “T081_Cupons”, e após aparece uma MsgBox "2-QLBL. Este cupom não foi localizado. Por favor, prossiga...".

    Resultado: Desculpe, a rotina não seria dessa forma, então para tentar ser mais explícito e claro, embora vá ficar o texto muito extenso, seria assim:

    • Digitar o intervalo inicial e o intervalo final para a quantidade de códigos aleatórios a ser gerado, seja diretamente nos campos correspondentes ou através de InputBox, para cada empresa individualmente, ficando esses códigos vinculados à mesma.
    • Nesse momento é gerado um número de Lote único para cada código, dentro do intervalo informado.
    • Na tabela que guarda os códigos gerados, os dados ficariam gravados assim: Exemplo intervalo 1 a 5 para a Empresa com CodEmpresa= 1:

    CodCupom            IDEmpresa IDVendedor NumLote ValorInicial ValorFinal ValidacaoSN
    001.000001-QAAB        1                 0             001           1              5              0
    001.000005-LQLA         1                 0             001           1              5              0
    001.000003-QLBL         1                 0             001           1              5              0
    001.000002-ALQB         1                 0             001          1               5              0
    001.000004-LQAL         1                 0             001           1              5              0
    Significa:
    1) Que foram gerados 05 códigos aleatórios (Cupons) que ficarão vinculados à Empresa 1, gerados com o Lote nº 001, indicando que o intervalo inicial = 1 e o intervalo final =5, em todos os 05 registros;
       • PS: A máscara do ‘CodCupom’ = 03 caracteres para o código da Empresa + 06 caracteres para os números gerados + 04 letras maiúsculas

    2) Todos os Cupons gerados precisam ficar sempre disponíveis para que posteriormente possam ser validados pelo usuário no campo ‘ValidacaoSN’, caso o Cupom tenha sido gerado e emitido pela rotina.

    3) A validação é sempre posterior à geração dos Cupons, e não no momento da geração dos mesmos;

    4) Caso essa mesma Empresa 1, solicite mais 10 cupons, seriam gerados mais 10 registros que ficariam assim gravados:
    CodCupom              IDEmpresa IDVendedor NumLote ValorInicial ValorFinal ValidacaoSN
    001.000006-ABQL            1               0             002          1              10              0
    001.000008-AQLA            1               0             002          1              10              0
    001.000010-QABQ           1               0              002         1              10              0
    001.000012-ALQB            1               0             002          1              10              0
    001.000015-AQAL            1               0             002          1              10              0
    001.000007-NNBA            1               0             002         1              10              0
    001.000009-BQAB            1               0             002          1              10              0
    001.000011-QBAL            1               0             002         1               10              0
    001.000014-BQLA            1               0             002         1               10              0
    001.000013-QNBA           1               0              002        1               10              0
    Importante:
    • Observe que o último código numericamente gerado para a Empresa 1 no Lote 001 foi 000005, então quando gerar novos códigos no próximo Lote 002, o mesmo iniciará o intervalo inicial a partir de 000006 até o intervalo final informado, e assim por diante nas próximas gerações dos Cupons para essa mesma Empresa, nesse caso, a rotina precisaria identificar o último código numericamente gerado.

    5) Quando qualquer outra Empresa solicitar Cupons. Exemplo: intervalo 1 a 5 para a Empresa com CodEmpresa= 2 ficariam assim gravados:
    CodCupom              IDEmpresa IDVendedor NumLote ValorInicial ValorFinal ValidacaoSN
    002.000001-ABQL            2               0              003         1               5              0
    002.000003-ABLA            2               0              003         1               5              0
    002.000005-QALQ           2                0             003         1               5               0
    002.000004-ABQB           2                0             003         1               5               0
    002.000002-ABAL           2                0             003         1               5               0
    Significa:
    • Que foram gerados 05 códigos aleatórios (Cupons) que ficarão vinculados à Empresa 2, iniciando do código 000001, assim como da Empresa 1, gerados com o Lote nº 003, visto que a numeração dos Lotes pode ser sequencial dentro da Tabela – ou não – entre as Empresas quando solicitam os Cupons, mas como são Empresas diferentes, os intervalos podem ser iguais quando da geração dos códigos aleatórios;
    • PS: O número do Lote entre as Empresas pode ser sequencial ou não, como achar melhor ou mais prático.

    6) Quando a Empresa 1 solicitar mais 05 Cupons, os dados ficariam assim gravados:
    CodCupom              IDEmpresa IDVendedor NumLote ValorInicial ValorFinal ValidacaoSN
    001.000016-ABQL            1                0           004            1              5             0
    001.000020-ABLA            1                0            004           1              5             0
    001.000018-BALQ            1                0            004           1              5             0
    001.000017-ABQB            1                0            004           1              5             0
    001.000019-AQAL            1                0            004           1              5             0

    7) Pode excluir o campo ‘CampoSerie’ da tabela “T081_Cupons”;

    8)Para finalizar, após gerar os códigos por intervalos para os Cupons, incluir a opção de imprimir esse intervalo por Lote gerado.
    Exemplo: MsgBox: “Deseja imprimir o Lote gerado do Intervalo ? – Opções: Sim / Não”
    Sim: Imprime Relatório
    Não: Finaliza rotina

    B) Ao clicar no botão 'cmdRelatorio' aparece a mensagem: "Erro de compilação. Variável não definida", apontando para a linha: DoCmd.OpenReport "Relatório", acViewReport, , , acDialog,
    com destaque em azul para a palavra 'acViewReport'.

    Caro colega, caso precise fazer quaisquer tipos de alteração nas tabelas ou formulários, fique a vontade, e espero que dessa vez tenha ficado mais objetivo e claro para o seu entendimento ou dos demais.

    Muita Paz.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 28/4/2015, 18:08

    Olá vileman,

    Ao digitar o código do cupom gerado, verifique se o cursor está no registro seguinte, caso contrário substituirá o código existente. Vou reler as suas observações para ver se entendo como são gerados os campos IDEmpresa, lote e camposerie. De antemão, me explique porque não entendi na apresentação do problema e nem na leitura rápida de suas últimas observações.

    Quanto a tabela tblSelecao eu só a criei para gerar uma consulta onde não houvesse um campo de código do tipo autonumeração como o que existe se não me engano na tabela T081_Cupons.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 28/4/2015, 18:24

    Ao digitar o código do cupom gerado, está apenas substituindo o código já existente.

    O campo IDEmpresa é salvo pelo campo CodEmpesa, visto que o mesmo é vinculado ao Campo CodEmpresa, pelo relacionamento criado como um-para-vários, respectivamente: CodEmpresa x IDEmpresa, visto que a vinculação também foi feita no formulário 'F08_Empresas' com o subformulário 'F081_Cupons'.

    O campo Lote seria gerado pela rotina após gerar os números aleatórios e seria repetido em cada um dos registros. Exemplo: Gerar intervalo inicial 1 e intervalo 5, então esses 5 registros teriam o mesmo nº de lote, ou se preferir um lote com 5 registros gerados. Esse nº de Lote por empresa pode ser na ordem sequencial independentemente da Empresa ou se sequencial por empresa, tanto faz, como achar melhor. Que também seria usado para imprimir um Relatório por Empresa e Lote, quando necessário.

    O campo 'CampoSerie' pode excluir, coloquei como teste quando da sua 1ª rotina enviada, achei que precisaria criar esse campo na tabela.

    PS: Quanto a tabela 'tblSelecao', faça como achar melhor e mais prático ou mude o tipo de campo na tabela T081_Cupons, fique a vontade.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 28/4/2015, 19:03

    Ok,

    Vamos por etapas, primeiro exclua a tabela tblSelecao, ela não é mais necessária, troque pela tabela T081_Cupons na string SQL INSERT INTO. Modifiquei o código. Faça as seguintes alterações abaixo. Na própria inputbox serão gerados os códigos de cupons conforme o IDEmpresa inicial ou presente entre os intervalos, isto é, até você completar todos os registros com a inserção devida do código do cupom.

    Não vejo necessidade de desenvolver qualquer código para preencher o  número de lote. Basta preenchê-lo manualmente e ao gerar o código do cupom com um novo IDEmpresa começar tudo de novo as numerações de código de cupom.

    Para evitar duplicação de código de cupom, gere mais vetores conforme está explicado no código da função. Caso seja realmente necessário codificar o número de lote me avise.

    Outra coisa: VERIFIQUE SE O CURSOR ESTÁ NO REGISTRO SEGUINTE COM O CAMPO CÓDIGO DE CUPOM VAZIO; Preencha o valor inicial e valor final e em seguida clique no botão Gerar Cupons.



    Última edição por good guy em 29/4/2015, 16:56, editado 2 vez(es)
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 29/4/2015, 16:13

    Olá, Good Guy, bom dia.

    Segui suas instruções e fiz os testes, e aconteceu assim:

    1) Verifiquei se o cursor estava no registro seguinte com o campo Código de Cupom vazio = Sim, estava.

    2) Preenchi o valor inicial = 000001 e valor final = 000005 e cliquei no botão Gerar e foram gerados os códigos:
       2-AAAQ
       4-LLQA
       4-AAAQ
       2-AMHL
       2-NBAL
    que aparecem em uma InputBox que pede para digitar o código.

    Conclusão:
    a) Até a geração dos códigos está correto, mas o que preciso é que esses 05 códigos gerados - ou até mesmo uma quantidade maior - sejam todos lançados na tabela "T081_Cupons" e não que eu digite um dos códigos, pois quando digito ele simplesmente atualiza o campo 'CodCampo' para o registro corrente.
    b) Depois de gerados os Cupons com os códigos, os mesmos serão impressos para um formulário pre-impresso para posteriormente serem validados pelo usuário, ou seja, precisam ficar armazenados na tabela para que haja essa posterior validação dos cupons.
    c) Quando a mesma empresa fizer um novo pedido de mais cupons, estes também seriam adicionados aos já existentes na tabela para posterior validação.

    3) O preenchimento do nº do lote é necessário de forma automática, pois apesar de está usando o exemplo aqui na geração de apenas 5 ou 10 códigos, a ideia é que possam ser gerados 500, 1000 códigos ou até mais, e para fazer isso de forma manual seria demorado e improdutivo, entende?

    4) Inclui mais 2 vetores para as letras k(6)="H" e k(7)="H" e funcionou normalmente. Irei incluir todas as letras do alfabeto, até o término desta rotina.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 29/4/2015, 16:59

    Olá vileman,

    Como é que é a lógica de preenchimento do número do lote?
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 29/4/2015, 17:09

    Melhor ser sequencial por empresa, mas se ficar complicado pode ser sequencial independentemente da empresa.

    Exemplos: Sequencial por empresa
    1) Empresa 1 pediu 50 cupons = Lote 001
    2) Empresa 2 pediu 10 cupons = Lote 001
    3) Empresa 1 pediu mais 200 cupons = Lote 002
    4) Empresa 3 pediu 100 cupons = Lote 001
    5) Empresa 1 pediu mais 100 cupons = Lote 003
    6) Empresa 2 pediu 50 cupons = Lote 002

    Exemplos: Sequencial independente da empresa
    1) Empresa 1 pediu 50 cupons = Lote 001
    2) Empresa 2 pediu 10 cupons = Lote 002
    3) Empresa 1 pediu mais 200 cupons = Lote 003
    4) Empresa 3 pediu 100 cupons = Lote 004
    5) Empresa 1 pediu mais 100 cupons = Lote 005
    6) Empresa 2 pediu 50 cupons = Lote 006
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 29/4/2015, 17:52

    Olá vileman,

    Ainda está meio confuso e não padronizado. A lógica correta seria (independente da empresa):

    50 cupons => Lote 1
    100 cupons => Lote 2
    200 cupons => Lote 3

    Como é que pode ser do jeito como está? Que lógica é esta que não segue uma correspondência uniformizada? Está muito confuso. Não é possível fazer do jeito indicado acima ou parecido?



    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 29/4/2015, 18:30

    Sim, pode ser sequencial independente da empresa, ou seja, sequencial a partir de 001 a cada pedido de cupons, independente da empresa que faça o pedido.

    1º pedido = 50 cupons => Lote 001 - empresa 01
    2º pedido = 100 cupons => Lote 002 - empresa 01
    3º pedido = 200 cupons => Lote 003 - empresa 02
    4º pedido = 100 cupons => Lote 004 - empresa 03
    e assim por diante ...

    Entendendo-se que no exemplo acima a empresa 01 fez os 2 primeiros pedidos.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 29/4/2015, 18:45

    Olá vileman,

    Ainda está confuso. Vê se você consegue me entender.

    1º pedido = 50 cupons => Lote 001 - empresa 01
    2º pedido = 100 cupons => Lote 002 - empresa 01
    3º pedido = 200 cupons => Lote 003 - empresa 02
    4º pedido = 100 cupons => Lote 004 - empresa 03

    Veja como seria mais prático codificar. Para cada empresa sua própria numeração à parte.

    1º pedido = 50 cupons => Lote 001 - empresa 01
    2º pedido = 100 cupons => Lote 002 - empresa 01
    *********************************************
    3º pedido = 200 cupons => Lote 001 - empresa 02
    ..........................................................................
    ********************************************
    4º pedido = 100 cupons => Lote 001 - empresa 03
    .............................................................................
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatorios e validação

    Mensagem  vileman 30/4/2015, 01:28

    É exatamente isso quando falei que seria sequencial por empresa, acho que não expliquei direito, mas enfim é isso mesmo
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 30/4/2015, 16:54

    OK

    Aguarde...Verifique se estamos indo bem pela sua caixa de entrada de e-mails. Se estiver ok posto algum resultado aqui como código.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 4/5/2015, 15:47

    Bom dia, Good guy

    Sim, recebi o arquivo enviado por e-mail no dia 30/04/2015.

    Nos testes gerando a cada vez 25 cupons nos intervalos inicial e final, conforme sua orientação, só gerou até um total de 125 cupons, após isso o sistema trava e não consegue mais gerar cupons, mesmo eu reiniciando e tentando gerar mais 25 cupons, continua travando.

    Quanto ao número do Lote não precisa se preocupar, pois sei que deve está difícil e você com pouco tempo para tentar solucionar, pois também tem suas outras ocupações, mas de antemão agradeço pelo interesse e esforço para me ajudar, e como você disse que já chegou até onde deu para trabalhar nessa rotina, vou pensar em alguma outra solução, caso ninguém mais aqui do Fórum não possa ajudar também. Continua em aberto, caso alguém queira contribuir.

    Muita Paz
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 4/5/2015, 17:29

    Olá vileman,

    Creio não ter dito que não ia continuar com a rotina, espera só mais um pouco. Todo desafio vale a pena a tentativa principalmente porque sairemos ganhando com isso tanto você quanto eu. Estou fazendo alguns testes para numerar o lote. Quanto ao total de loopings gerados empacar em 125 vou dar uma olhada nisso para ver se dá pra corrigi-lo. Tudo bem ?
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 4/5/2015, 17:51

    Olá, Good guy

    Havia entendido que não poderia continuar a rotina por uma questão de tempo escasso da sua parte, além da complexidade dessa rotina, o que seria perfeitamente normal, pois todos aqui têm suas obrigações e afazeres, mas já que pode continuar fico-lhe grato mais ainda, e nem sei como agradecer, pois todo desafio realmente vale a pena, visto que todos saem ganhando; então pode continuar com os testes de numeração dos lotes; e também vou testar a rotina em outra máquina para ter certeza que não foi o meu computador de casa, pois no dia seguinte tive que formatar o mesmo, pois ele não inicializava de jeito nenhum.

    Para tentar facilitar pensei no seguinte: Ao invés de trabalhar com um intervalo inicial e outro final, não seria mais prático criar uma opção para o usuário informar a quantidade de cupons que deseja gerar e partir daí gerar e gravar essa quantidade informada na tabela "T081_Cupons", o que acha ?





    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 4/5/2015, 20:22

    Olá vileman,

    Concluí o trabalho. Por favor não poste o aplicativo, por causa de direitos autorais sobre o código que deve ser publicado em e-book. Vou publicar aqui apenas parte do código para estudo dos colegas. Verifique sua caixa de entrada de e-mails.


    Caros colegas,

    Em breve estarei anunciando um ebook com este código completo e outros códigos interessantes para vocês utilizarem em seus sistemas. Por favor, aguardem !!!

    Código:

    Public Function CriarSequencia(ValorInicial As Long, ValorFinal As Long) 'Os parâmetros estabelecem os limites inferior e superior
    On Error Resume Next
    Dim i As Long          'O tipo Long possibilita a inserção de valores acima dos limites de Integer (Sem estouro)
    Dim sSimb As Variant
    Dim sSimb2 As Variant
    Dim k(1 To 20) As String
    Dim strCod As String
    Dim strSQL As String
    Dim sCodCupom
    Dim sIDEmpresa
    Dim sIDVendedor
    Dim sValorInicial
    Dim sValorFinal
    Dim sNumLote
    Dim rs As DAO.Recordset
    Dim strSequencia As Variant
    Dim x, z, p, n, y As Long
    Dim Reg As Long
    Dim subSequente As Variant
    Dim nTotal As Long

    Set rs = CurrentDb.OpenRecordset("T081_Cupons", dbOpenTable)

    ValorInicial = Me.txtValorInicial  'Caixa de texto para inserir o valor inicial
    ValorFinal = Me.txtValorFinal     'Caixa de texto para inserir o valor final
    sIDEmpresa = Me.txtIDEMPRESA
    sSimb = "-"              'Caixa de texto com o símbolo separador (Ex.: 1-2-3-; 1.2.3.;)

    Do While Not rs.RecordCount = ValorFinal
    'Aumente o número de vetores até se estender à última letra do alfabeto
    k(1) = "A"
    k(2) = "B"
    k(3) = "N"
    k(4) = "Q"
    k(5) = "L"
    k(6) = "E"
    k(7) = "C"
    k(8) = "D"
    k(9) = "G"
    k(10) = "H"
    k(11) = "I"
    k(12) = "M"
    k(13) = "K"
    k(14) = "P"
    k(15) = "R"
    k(16) = "S"
    k(17) = "T"
    k(18) = "U"
    k(19) = "V"
    k(20) = "O"


    For i = ValorInicial To ValorFinal Step 1
       Call Randomize
        txtSequencia = txtSequencia & Int((ValorFinal * Rnd) + 1) & sSimb & k(Int(20 * Rnd) + 1) & k(Int(20 * Rnd) + 1) & k(Int(20 * Rnd) + 1) & k(Int(20 * Rnd) + 1) & vbCrLf 'Caixa de texto grande onde se desenvolverá a sequência.
        'Altere o 5 para o total de número de vetores caso você aumente. Isso evitará a repetição de alguma série
        
          
    Next i

    strSequencia = txtSequencia

    End Function


    Última edição por good guy em 5/5/2015, 01:09, editado 1 vez(es)
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 5/5/2015, 00:37

    Olá, Good guy

    Sem problemas, vou verificar meu e-mail, e com certeza você quando lançar seu e-book terei interesse em adquirir.

    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  vileman 25/5/2015, 14:59

    Dou como Resolvido o tópico.

    Valeu, Good guy
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Gerar números aleatórios com validação Empty Gerar números aleatórios com validação

    Mensagem  good guy 10/6/2015, 16:51

    Valew. O fórum todo agradece !!!

    A todos os interessados:

    Dê uma curtida em minha página no Facebook.

    https://www.facebook.com/EduardoMachado

    Visite meu site:

    www.goodguyaccessvba.com.br

    Se quiser aprender mais adquira os meus dois livros DOMINE O ACCESS VBA e TÉCNICAS ESPECIAIS DE ACCESS VBA e você vai aprender isto e muito mais.

    Editora Livrorama(DOMINE ...):
    www.livrorama.com.br

    Editora Ciência Moderna(TÉCNICAS...):
    www.lcm.com.br


    Um grande abraço.

    "O temor do Senhor(respeito pela Palavra de Deus, leitura e obediência) é o princípio do conhecimento" (Prov. 1.7)
    Disse Jesus: "E conhecereis a Verdade e a Verdade vos libertará". (Jo 8.32)
    Disse Jesus: “Eu sou a luz do mundo; aquele que me segue, não andará em trevas, mas terá a luz da vida.” (Jo. 8.12)

    Conteúdo patrocinado


    [Resolvido]Gerar números aleatórios com validação Empty Re: [Resolvido]Gerar números aleatórios com validação

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 08:41