Como pegar o ultimo campo ID que é auto imcrement, pelo evento before insert.
eu fiz assim, fiz um select do ultimo campo gravado, so que não adianta, ele nao pega.
grato.
Como pegar o ultimo campo ID que é auto imcrement, pelo evento before insert.
eu fiz assim, fiz um select do ultimo campo gravado, so que não adianta, ele nao pega.
grato.
Verifique se a macro sc_seq_register resolve seu problema.
não consegui achar esta funçao no manual.
Esta no webhelp do SC3.
sc_seq_register
Disponibiliza o número sequencial do registro que está sendo processado.
Ex:
$seq_atual = {sc_seq_register};
Tente pegar o ultimo ID através de um select:
Exemplo em uma tabela assim:
tb_clientes
id | nome
sc_lookup(id,"Select max(id) from tb_clientes");
$maior_id={ds[0][0]};
A variavel ‘$maior_id’ vai ser carregada com o maior ‘id’ cadastrado.
Atenciosamente
Renan Andrade
NetMake - Soluções em Informática
valeu
Isso só vai funcionar se a aplicação não tiver acesso concorrente!!!
Pegando a tabela de exemplo do post do Renan eu faço a busca por ID assim:
sc_lookup(id,“SELECT id FROM tbl_clientes ORDER BY id DESC”);
if(empty({id[0][0]}))
{
{campo_id} = 1;
}
else
{
{campo_id} = {id[0][0]} + 1;
}
e já incremento, sendo {campo_id} o campo da sua aplicação que vai receber o ID
Sobre o acesso concorrente, quando estamos no onBeforeInsert já estamos com a sessão do banco aberta e o banco não vai executar nada até confirmar ou cancelar a operação.
Então acredito que não tem problema.
a sc_seq_register não funciona em todas aplicações, acredito que só em consulta, usar o Select max(id) … é mais aconselhavel.
Pergunto:
É possível usar [font=Verdana]select gen_id(gen_cursos_id, 0) from rdb$database[/font] com eventos, eventos ajax ou javascript e mostrar o retorno da query no formulário sem o mesmo ser repassado para o banco de dados, uma vez que estou disparando esse generator através de trigger do bd?
Tipo:
sc_lookup(rst, “select gen_id(gen_cursos_id, 0) from rdb$database”);
if (!empty({rst})){
$codigo = {rst}[0][0];
}
Olá eu já utilizei a função mysql_insert_id() e funcionou perfeitamente, não sei se vai lhe ajudar segue o link do manual de referência do Mysql: http://dev.mysql.com/doc/refman/4.1/pt/example-auto-increment.html
Para utilizá-la dentro do Scriptcase atribua a uma variável
$id = mysql_insert_id();
Obs: Quando utilizei foi dentro do evento OnAfterInsert.
Bacana parabens realmente funciona
sc_lookup(id,“SELECT id FROM tbl_clientes ORDER BY id DESC”);
if(empty({id[0][0]}))
{
{campo_id} = 1;
}
else
{
{campo_id} = {id[0][0]} + 1;
}