Usando Miro Gerador de Sistemas no FreeDOS 3.4 ...
Enviado: 10 Ago 2025 20:50
Amigos do fórum, há muitos anos atrás, na década de 1990, eu usava o Gerador Automático de Sistemas MIRO. Agora, instalei a nova versão do FreeDOS, a 3.4, e dentro do DOSBOX Staging, em um diretório na pasta "/home" do meu Debian Linux 12 LXqt. O interessante é que, com a versão 1.3 do FreeDOS, o miro não funcionava e, agora com a nova versão, o programa funciona! Então, uma pergunta simples: quando eu o usava há tempos atrás, eu gerava um campo autoincrement em "..dbf" padrão ".ntx", que é o que o MIRO gera. Mas não lembro direito como fazia isso ... faz muito tempo ... eu fiz um Sistemas de Despesas, e mudei os fontes gerados pelo Gerador Automático. Abaixo coloco o trecho de código em específico:
Essa parte acima mostrada, eu copiei de outro trecho de código nesse mesmo fonte, apenas acrescentando o contador, abaixo mostro de onde retirei tal código:
Eu não lembro se no autoincrement eu colocava mais alguma coisa manualmente ... o que vem ocorrendo é que inseri dois registros e encerrei o sistema. Entrei novamente, e acessei o menu de inclusão de "Usuários", cujo código acima se refere. O contador mostra o registro número "2" para ser inserido. Quando pressiono enter, dá a mensagem dizendo que o mesmo já existe. Até aí tudo bem, pois o programa pergunta se eu devo "alterar" ou "inserir" novo registro. Então eu insiro mais dois registros. No campo mostra estar no registro "3". Eu saio do programa e acesso o mesmo novamente e, para minha surpresa, o contador estaciona no registro "2" ... o interessante que após pedir para inserir novo registro, ele acha os outros que gravei e a contagem do autoincrement volta ao normal ... alguém pode dizer onde estou errando? Outra coisa, eu testei compilar com o Harbour 3.2 os fontes e esse compilador fez o trabalho corretamente, mas o contador continua errado, mesmo compilando com o Harbour do Debian 12: Abaixo, coloco o código completo:
Aguardo contato e, desde já, agradeço a ajuda!
Everaldo Bernardo Cunha
Código: Selecionar todos
FUNCTION CARREG01
*
* -> Carrega variaveis para entrada ou altercao de dados
PARA R_CAR
**
** Bloco de insero I01.B14
**
PUBLIC CODIGO,NOME,TELEFONE,EMAIL
IF M->R_CAR=1
M->ORDEM = INDEXORD() <---- daqui
SET ORDER TO 2
M->CODIGO=CODIGO+1
SET ORDER TO M->ORDEM <--- até aqui
M->NOME=SPACE( 30)
M->TELEFONE=SPACE( 15)
M->EMAIL=SPACE( 50)
**
** Bloco de insero I01.B15
**
ELSE
M->CODIGO=CODIGO
M->NOME=NOME
M->TELEFONE=TELEFONE
M->EMAIL=EMAIL
**
** Bloco de insero I01.B16
**
ENDIF
Código: Selecionar todos
FUNCTION VERI001
*
* -> Funcao que verifica duplicidade no arquivo "USUARIOS"
PARA R_PARA
M->I_REG=RECN()
M->ORDEM = INDEXORD() <----- daqui
SET ORDER TO 2
SEEK STR(M->CODIGO,10,0) <---- aqui eu coloquei o contador
IF M->I_REG=RECN() .AND. R_PARA=2 <---- essa linha eu eliminei
SET ORDER TO M->ORDEM <----- até aqui
RETURN .T.
ENDIF
Aguardo contato e, desde já, agradeço a ajuda!
Everaldo Bernardo Cunha