ObterProximoId
Gerar um ID único para controlar os sequenciais das tabelas.
Sintaxe: função Alfa Identificador, Numero Incremento, Alfa Filtro, Numero End ProximoId
Parâmetros:
Nome | Tipo | Descrição |
---|---|---|
Identificador | Alfa | Variável com um identificador único, usado para a geração do sequencial. |
Incremento | Número | Variável com a quantidade que será incrementada no sequencial. |
Filtro | Alfa | Variável com o comando SQL para verificar o maior sequencial existente na base. |
Retorno:
Nome | Tipo | Descrição |
---|---|---|
ProximoID | Número | Variável com o retorno contendo um identificador único. |
Definir Alfa aChaveID;
Definir Alfa aFiltroID;
Definir Alfa aDataBancoID;
Definir Alfa aDataID;
Definir numero nPosID;
Definir alfa aEmpresaID;
Definir Alfa aContaID;
@Monta a chave que será usada para gerar o ID único@
aContaID = "";
aContaID = aNumCco;
IntParaAlfa(nEmpAtu, aEmpresaID);
IntParaAlfa(nDatNum, aDataID);
aChaveID = "E605EXT" + "#" + aEmpresaID + "#" + aContaID + "#" + aDataID;
@Insere o ' no começo e fim aNumCco, para ser usado no select@
InserirStr("'" ,aContaID, 0);
TamanhoStr(aContaID, nPosID);
InserirStr("'", aContaID, nPosID+1);
@Converte a data para o formato de banco no SQLSenior2 (ex: Day(ANO,MES,DIA))@
ConverteDataSqlSenior2(nDatNum, aDataBancoID);
@Monta o filtro que será usado na função ObterProximoId, esse filtro serve para verificar se já tem algum SEQEXT, evitando chave duplicada@
aFiltroID = "SELECT IFNULL(MAX(E605EXT.SEQEXT), 0) FROM E605EXT WHERE CODEMP=" + aEmpresaID + " AND NUMCCO=" + aContaID + " AND DATEXT=" + aDataBancoID;
@Irá gerar um ID único de acordo com os parâmetros@
ObterProximoId(aChaveID, 1, aFiltroID, nSeqExt);
@Recebe o ID gerado@
E605EXT.SeqExt = nSeqExt;
Observações: O parâmetro do filtro não é obrigatório, mas é interessante para evitar conflitos com registros existentes na base.