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.