Tabela não ordena

10/03/2003

0

Tenho uma tabela e um campo Integer. Preciso sempre incrementar 1 a este campo, toda vez q eu inserir um novo registro. Faço assim:

var
cont: integer;
begin
tabela.open;
tabela.last;
cont:=1;
cont:=cont+tabelacampointeger.asinteger;
tabela.insert;
tabelacampointeger.asinteger:=cont;
tabela.filtered := false;
tabela.filter := ´cod_venda = -1´;
tabela.filtered:=true;
end;

no afterpost da tabela está assim:
begin
if vendanumero.asinteger = ´´ then exit;
tabela.filter := ´cod_venda = ´+vendnumero.asinteger;
dbisavechanges((dataset as ttable).handle);
end;

este campo é uma chave primária. Qdo reseto a aplicação, e volto, o ponteiro da tabela, não vai para o último registro com o comando last. Qdo abro o DataBase DeskTop, é listado assim:
1, 2, 5,3 , 4 mas deveria estar assim: 1, 2, 3, 4, 5. O q será. Tenho um campo autoincremental como primária também. O q será?


Paulo

Paulo

Responder

Posts

10/03/2003

Evandro Massini

Não intendi muito bem seu código mas...

Tente usar o seguinte:

var
cont: integer;
begin
tabela.open;
/// veja aqui
tabela.indexfieldsnames:=´nomedatabela´;//ordena de forma crescente
/////////////
tabela.last;
cont:=1;
cont:=cont+tabelacampointeger.asinteger;
tabela.insert;
tabelacampointeger.asinteger:=cont;
//// veja aqui
tabela.post;
/////////////
tabela.filtered := false;
tabela.filter := ´cod_venda = -1´;
tabela.filtered:=true;
end;


Vc não usou o método Post para confirmar o acréscimo do novo registro.


Responder

10/03/2003

Einstein

cara, usando esse metodo vc vai ter dor de cabeça, em um futuro próximo os campos Index da sua tabela vai começar a duoplicar. veja o exemplo de como vc pode resolver este problema:
Crie um procedure Chamada Sequencia:
Insrira um Componente Query com o Seguinte Código:
Select Max(CampoChavePromaria) From tabela

no evvento OnNewRecord digite o seguinte Código:

Query.Opem
CampoChavePrimaria.AsInteger:=Query.Fields[0].AsInteger+1;
Query.Close;


Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar