Autor Tópico: [RESOLVIDO] Pegando o ultimo incremendo da tabela  (Lida 763 vezes)

marcelo.mjf

  • Iniciante
  • **
  • Mensagens: 74
    • Email
[RESOLVIDO] Pegando o ultimo incremendo da tabela
« Online: Abril 23, 2015, 10:18:18 am »
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
« Última modificação: Abril 23, 2015, 10:07:45 pm por marcelo.mjf »

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Pegando o ultimo incremendo da tabela
« Responder #1 Online: Abril 23, 2015, 10:27:56 am »
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.

marcelo.mjf

  • Iniciante
  • **
  • Mensagens: 74
    • Email
Re:Pegando o ultimo incremendo da tabela
« Responder #2 Online: Abril 23, 2015, 10:40:54 am »
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

marcelo.mjf

  • Iniciante
  • **
  • Mensagens: 74
    • Email
Re:Pegando o ultimo incremendo da tabela
« Responder #3 Online: Abril 23, 2015, 10:06:04 pm »
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.