[RESOLVIDO] Pegando o ultimo incremendo da tabela

Olá pessoal eu gostaria de saber como poderei fazer para pegar o ultimo incremeto da tabela, ex: se tenho 10 registros e não exclui nenhum tenho o último sendo 10, se exclui qualquer um inclusive o 10 na tabela de incrementos meu ultimo é 10, então eu gostaria de pega sempre esse último e não fazer um select max que não vai dar certo porque ele olha o ultimo registrado, e eu não quero assim. Tentei o sc_seq_register, mas ele só está disponível no onRecord ou seja, em uma consulta, eu preciso no formulário de registro unico, pois esse valor do ultimo registro eu incrementarei +1 ou seja, será o valor do registro que está sendo gravado, para gerar um código, como se fosse uma senha e atualizar outro campo na mesma tabela, mas no momento do insert eu não tenho como ter esse registro previamente para poder gerar esse código e gravar na tabela, por isso preciso pegar ele antecipadamente, popular no campo “codigo” e ao dar o insert tudo ir junto para a tabela.

Se alguém tiver sugestão melhor para esta situação sem fazer gambiarra, eu aceito.

Marcelo Ferreira

Crie uma tabela para guardar o último id inserido.
Numa trigger em sua tabela a controlar faça um update nessa nova tabela com o novo id.
Daí basta dar um select na nova tabela.

Obrigado Haroldo, acho que essa sugestão é bem prática e viável, na verdade eu não havia pensando nisso, porque eu pensei que existisse uma macro que captasse esse valor por isso nem direcionei meu pensamento a fazer uma tabela para este fim. Mas não deixa de atender minha necessidade.

Obrigado.

Marcelo Ferreira

Olá Pessoal, especialmente o Haroldo que tanto me ajudou neste forum, quero compartilhar uma experiência minha que obtive hoje com relação a este tópico. Prezados não quero desconsiderar nenhuma das sugestões aqui me dada, todas para mim são úteis que me servirão em algum momento.

Resolvi a questão deste tópico sem a necessidade de criar a tabela, não encontrei no scriptcase a macro que fizesse isso, mas peguei um código PHP e inseri obtendo o resultado desejado.

Veja abaixo, no evento ajax onBlur do campo nome eu coloquei esse codigo:
$check_sql = “SHOW TABLE STATUS FROM bdeefa LIKE ‘pacientes’”;
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]})){
{attrib_ultimoId} = {rs[0][10]};//coluna 10 contando a partir do 0 = autoincrement
}

/O codigo acima pega do banco de dados tudo referente à tabela de paciente inclusive o proximo autoincremento e coloca em uma sentença de select/

E criei um metodo php: acima citado

a variavel:
{attrib_primeiraLetra} é um atributo da aba programação.
{sigla} é o campo da tabela do banco de dados, o qual recebe o código que mencionei

{attrib_primeiraLetra} = substr({nome}, 0, 1);
{sigla} = {attrib_primeiraLetra} . ‘-’ . $ultimoId;
/{sigla} é o campo do bando de dados recebe o código gerado, quconsiste na primeira letra do nome concatenando com ‘-’ e concatenando com o id do registro autoincremento/

Dessa forma eu capturo o id autoincrement que vai ser gravado na tabela se o registro for inserido.

e nos eventos onBeforeInsert e onBeforeUpdate eu coloco o seguinte código:

no onBeforeInsert:
scp_gera_sigla({attrib_ultimoId});//passa como parametro para o metodo php, o atributo {attrib_ultimoId} com o novo id, já que se trata de pegar o mesmo para gerar no campo {sigla} o novo código junto com a inserção.

no onBeforeUpdate:
scp_gera_sigla({id});//passa como parametro para o metodo php, o campo {id} já existente já que se trata de pegar o mesmo para atualizar o campo {sigla} em caso de alteração do nome.

E assim tenho resolvido meu caso.