[firebase-br] Dúvida referente a Delete

rdaguiar rdaguiar.dantas em gmail.com
Ter Jan 4 06:17:27 -03 2011


Oi Paulo, valeu, mas não é isso não. A sequência da tabela quem faz é a 
tigger junto com o generator.
No meu caso, é após o Delete (exclusão do registro corrente), digamos 
que seja o registro 3, então, se são 5 registro que a tabela tem, o 4 
passou a ser 3, o 5 passou a ser 4, mas meu ID (que é um campo), eu 
queria que fosse alterado para que a sequência ficasse correta 1,2,3,4.
Só tenho uma tabela, o programa é simples.
Estou utilizando Zeos (esqueci de dizer), mas não uso tabela, uso query.

Eu não sei se estou explicando bem pelo fato de eu ser leigo, Uma vez eu 
fiz isso a muito tempo, não me lembro como foi, mas acho que envolvia 
duas tabelas, uma era temporária onde se fazia isso. Se alguém estiver 
me entendendo e puder me ajudar eu agradeço muito.

Robson

Em 04-01-2011 00:30, Paulo Portella escreveu:
> Cada caso um caso, então dou-lhe 2 saídas:
>
> 1o.) no BeforePost da sua tabela dentro do Delphi vc faz o seguinte:
>
> if dm.Tabela.State in [dsInsert] then
> dm.TabelaCAMPO.AsInteger := FuncaoProximoCodigo(Tabela, Campo, Condição);
>
> function FuncaoProximoCodigo(Tabela, Campo, Condicao : String): Integer;
> begin
>    // sqlProximoCodigo é uma TSqlQuery
>    if sqlProximoCodigo.Active then sqlProximoCodigo.Close;
>    sqlProximoCodigo.SQL.Clear;
>    sqlProximoCodigo.SQL.Add('SELECT MAX('+Campo+') AS VALOR FROM '+Tabela+'
> '+Condicao);
>    sqlProximoCodigo.Open;
>    if sqlProximoCodigo.FieldByName('VALOR').IsNull then Result:=1 else
>    Result:=StrToInt(sqlProximoCodigo.FieldByName('VALOR').Value)+1;
> end;
>
> ou então :
>
> 2o.) Você pode deixar com que a própria base de dados seja responsável pela
> numeração/sequenciamento....
> Como? Fiz uma rápida pesquisada no Google e encontrei::
>
> http://www.firebase.com.br/fb/artigo.php?id=1017
> http://www.devmedia.com.br/post-2233-Campo-Auto-incremento-Firebird-Interbase.html
> http://preclog.blogspot.com/2007/11/autoincrement-no-firebird.html
>
> Aproveite pra estudar/conhecer melhor como se utiliza, vlw?
>
> Qualquer coisa é só gritar.
>
> Um abraço.
>
>
> Em 3 de janeiro de 2011 22:37, Leonardo Terrão
> <leonardoterrao em gmail.com>escreveu:
>
>> Olha sou meio novo na area também, mas se o ID que vc quer q atualize venha
>> de um auto incremento e seja a chave primária ele nao poderá alterar o
>> valor, mesmo q voce delete todos, o proximo q voce adicionar será ID 6 na
>> primeira linha da tabela.
>>
>> Em 3 de janeiro de 2011 19:56, rdaguiar<rdaguiar.dantas em gmail.com
>>> escreveu:
>>> Olá pessoal
>>>
>>> Eu sou iniciante com programação em geral.
>>>
>>> Estou usando o Lazarus (primo do Delphi) no Linux Ubuntu e o Firebird 2.5
>>>
>>> Minha dúvida é a seguinte:
>>>
>>> No botão Deletar faço:
>>>
>>> DM1.DataSource1.DataSet.Delete;
>>>
>>> O registro corrente é deletado, até aí tudo bem. Só que, digamos que
>> tenho
>>> 5 registros na tabela e deletei o registro 3, então, o registro seguinte
>>> (que era o registro 5) passou a ser o registro 4, mas meu ID continuou
>> sendo
>>> 5. Como fazer para o ID atualizar automaticamente?
>>>
>>> Agradeço a ajuda.
>>>
>>>
>>> Robson
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>
>>
>> --
>> Leonardo Terrão
>>
>> leonardoterrao em hotmail.com
>>
>> Análise e Desenvolvimento de Sistemas
>>   ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>





Mais detalhes sobre a lista de discussão lista