Problemas com Auto-Incremento......
15/12/2003
0
[i:d21e4c2f77]
var
Cod:Integer;
begin
TbDepto.Active:=True;
IF TbDepto.IsEmpty
then Cod:=1
else
begin
TbDepto.IndexName:=´RDB$PRIMARY10´;
TbDepto.Last;
Cod:=TbDeptoCod_Depto.AsInteger+1;
while Cod <3 Do
Cod:=0+Cod;
end;
TbDepto.Append;
TbDeptoCod_Depto.Value:=Cod;
DBEdit2.SetFocus;
[/i:d21e4c2f77]
Esclarecendo: o meu campo código é do tipo [b:d21e4c2f77]Integer[/b:d21e4c2f77]
Então, acontece o seguinte, quando a tabela está vazia ele consegue criar o 1º registro, mas o segundo não... ele não dá nenhuma mensagem de erro mas o programa trava e não faz nada. Se alguém tiver algum outro código que faça o que eu estou precisando pode me enviar por e-mail ou colocar aqui mesmo, ou indicar algum erro que esteja acontecendo que até agora eu ainda não percebi.
Desde já grato a todos que se dispuserem a me ajudar.
Marshall Mathers
Posts
15/12/2003
Pedro Bugim
obs. Não sei se vai servir muito, mas de repente já ajuda um pouco.
Abraços,
16/12/2003
Marshall Mathers
Pedro, [b:176d435084]muito obrigado mesmo pelo interesse em ajudar[/b:176d435084]
E a todos os outros, desde já agradeço.
16/12/2003
Marshall Mathers
________________________________________ | Código | Departamento | ----------------------------------------- | 1 | ADMINISTRAÇÃO | ----------------------------------------- | 2 | CPD | ---------------------------------------- | 3 | SECRETARIA | ---------------------------------------- | 4 | SUPERVISÃO | ----------------------------------------
Dae quando eu apagasse o registrro ´CPD´ que tem código = 2 a SECRETARIA que tem código = 3 passasse a ter código = 2 e SUPERVISÃO com código = 3 e assim sucessivamente, pq aí sim refletiria realmente o nº de registros salvos.... será que tem como fazer isso?
Se alguém puder me ajudar eu fico muito grato!
16/12/2003
Fred
*Na trigger eu apago o IF ficando + - assim
new.cod := gen_id(gerador,1);
end;
e no programa o valor cod := 0
quando chega no banco ele troca o 0 pelo gerador.
mas na revista clube delphi(acho que a ultima ou penultima edicao) o carlos cantu faz um exemplo de como pegar o valor do generator e jogar no campo na de inserir(so que estou sem a revista agora
16/12/2003
Marshall Mathers
obrigado pela ajuda!
16/12/2003
Pedro Bugim
primeiramente, vc tem que criar uma query (aki, como query1), que realizará este trabalho. O edit onde aparecerá o registro, nomeei de Edit1.
Procedure TForm1.FormShow(Sender: TObject); var k: integer; begin With Query1 do begin Close; Sql.Clear; //Posiciona na query o último registro Sql.Add(´Select CODIGO from TABELA order by CODIGIO desc´); Open; end; //adiciona 1 ao último registro da tabela Edit1.Text:=Query1.FieldByName(´CODIGO´).Asstring; K:=StrToInt(Edit1.text); K:=K+1; Edit1.text:=IntToStr(K); end;[code]
Clique aqui para fazer login e interagir na Comunidade :)