Como obter último registro (autoincrement) após um AfterInsert

Pessoal

Procurei no fórum mas não achei.

Como faço para obter o número gerado pelo autoincrement no onAfterInsert?

Existe alguma variável do sc que retorne isso?

Preciso para fazer um “select” logo após a inclusão e precisa ser na transação corrente, pois o sistema é usado por muitos usuários simultâneos.

Agradeço a ajuda!

Abraços

Marcelo

Explique detalhadamento para poder te ajudar, junto com seus campos…

Joelton, bom dia.

MInha tabela o campo ID é auto incremento. Após a inserção eu gostaria de saber qual o ID gerado para o registro que acabei de incluir.

Este ID gerado eu uso para recuperar algumas informações que acabaram de ser incluídas.

Por isso eu gostaria de saber como posso recuperar o ID que acabou de ser gerado pela inserção.

Abraços
Marcelo

Marcelo,

Eu costumo ter uma coluna na tabela onde salvo o valor da sessão do php.

Depois com um select max(id) from tabela where sessao=’$SESSAO_PHP’ me traz o último insert.

Fiz esta pergunta, pois se você estiver usando um formulário, dá pra fazer isto facilmente, pois no mesmo se for no sql e colocar uma condição desc referente a id, sairia numa boa…, mas mesmo com sua explicação não entendi seu uso, se for apenas a id que deseja, pode utilizar a expressão citada pelo Haroldo, ou um sc_lookup no banco, mas acho que o último seria a última alternativa.
Estou falando de maneira genérica, pois não sei qual a aplicação do caso.

Joelton,

Ocorre que após a inserção eu precisaria capturar algumas informações que foram gravadas para enviar um e-mail.

Eu poderia criar variáveis globais para isso e na hora de executar o envio, usá-las, mas não gostaria de criar variáveis globais em demasia para esta tarefa.

Buscando diretamente no banco, já que estou com a conexão aberta, seria melhor.

Mas acredito que a saída para simplificar seria criar as globais.

No SC existem algumas variáveis que retornar algumas operações, por exemplo sc_mail_send existe uma variável que retorna a situação sc_mail_ok. Pensei que para o “insert” existisse algo que retornasse o resultado do “autoincrement”.

Valeu
Marcelo

Amigão vou tentar te ajudar desta forma, como eu queria ser ajudado…rsrs, pegue o código, e busque outras colunas que deseja…

//COLOQUE DENTRO DA PROGRAMAÇÃO > MÉTODOS PHP > CRIAR UM MÉTODO NOME "retorno", sem as aspas
if({id_campo_formulario} != ''){
               
	$str_sql = "SELECT MAX(ID_nome_da_coluna_no_banco) FROM nome_tabela_do_banco;
	   
	sc_lookup(dataset,$str_sql);
	
	{campo_que_quer_ver_o_valor} = (!empty({dataset}[0][0]))?{dataset}[0][0]:{campo_que_quer_ver_o_valor};   
	   
   
}

Após isto declarar nos eventos onApplicationInit, OnLoad desta maneira:

retorno();

Tudo resolvido, lembrando caso queira outras informações, é só chamar outras colunas no dataset, é a última linha da programação PHP.

Joelton

Obrigado pela ajuda!

Marcelo

Bom Utilizo assim:
Faz um teste no evento AfterInsert

{id_object} é meu campo autoincremento.

sc_alert("{lang_generated} {lang_procol} Nº PRO{id_object}");

1 Curtida