Fórum Focalizar cursor no último registro de uma tabela. #236261

04/06/2004

0

Tenho uma tabela de clientes, onde tenho ID_CLIENTE, NOME_CLIENTE,etc.
Quero fazer com que uma variável(Cli_Atual : integer) receba o valor ID_CLIENTE do último Cliente cadastrado na tabela.
Fiz assim:
Table1.last;
Cli_Atual := Table1.Fields.Fields[1].AsInteger;
Funciona, mas quando excluo um Cliente do meio da tabela, ele não chega até o fim.
Ex.: ID_CLIENTE | CLIENTE
1hjk
2hkjl
3fgdf
4dfewrew
5bcvc
Se excluo o cliente 3, e executo o comando acima, ele retorna o cliente 2 como sendo o ultimo. E quero que retorne o cliente 5.


Bossoni

Bossoni

Responder

Posts

04/06/2004

Lucas Silva

Tente o código:

table1.Delete;
table1.FetchAll; // não tenho muita certeza disto;
table1.Last;



Responder

Gostei + 0

04/06/2004

Gandalf.nho

Se o que você quer é pegar o valor do último código (ou seja, o maior) monte uma query do tipo SELECT MAX(ID_CLIENTE) FROM TABELA. Execute-a e pegue o valor retornado. A vantagem é que não prejudica a performance (especialmente em rede)


Responder

Gostei + 0

04/06/2004

Bossoni

vlw pela ajuda, vou tentar.


Responder

Gostei + 0

04/06/2004

Bossoni

Se o que você quer é pegar o valor do último código (ou seja, o maior) monte uma query do tipo SELECT MAX(ID_CLIENTE) FROM TABELA. Execute-a [b:4e6b8eb29d]e pegue o valor retornado. [/b:4e6b8eb29d]A vantagem é que não prejudica a performance (especialmente em rede)

Só + uma coisa, não estou conseguindo pegar esse valor. Como faço isso, estou utilizando dbexpress e interbase.

Preciso armazenar esse valor em uma variavel integer


Responder

Gostei + 0

04/06/2004

Bruno Belchior

no evento OnDataChange do seu Data Source coloque o código
Table.last;


Responder

Gostei + 0

05/06/2004

Sandra

no evento OnDataChange do seu Data Source coloque o código Table.last;


Bruno, o ideal não seria no evento AfterDelete? :roll:


Responder

Gostei + 0

05/06/2004

Bossoni

Se o que você quer é pegar o valor do último código (ou seja, o maior) monte uma query do tipo SELECT MAX(ID_CLIENTE) FROM TABELA. Execute-a e [b:3b0bbe417e]pegue o valor retornado[/b:3b0bbe417e]. A vantagem é que não prejudica a performance (especialmente em rede)


Agradeço a todos pela ajuda.

Mas, essa dica do gandalf.nho é a que me serve. Mas quem puder ajudar, como faço para pegar esse valor que o select retorna e guardar em uma variavel.

Obrigado desde já pela ajuda


Responder

Gostei + 0

05/06/2004

Sandra

Experimente:
Cli_Atual := DM.SQLQuery1.FieldByName(ID_CLIENTE).AsInteger;

Lógico, DM se sua query estiver no DataModule.


Boa sorte!!


Responder

Gostei + 0

05/06/2004

Thoor Cobain

[quote:5562965e3b=´gandalf.nho´]Se o que você quer é pegar o valor do último código (ou seja, o maior) monte uma query do tipo SELECT MAX(ID_CLIENTE) FROM TABELA. Execute-a e [b:5562965e3b]pegue o valor retornado[/b:5562965e3b]. A vantagem é que não prejudica a performance (especialmente em rede)


Agradeço a todos pela ajuda.

Mas, essa dica do gandalf.nho é a que me serve. Mas quem puder ajudar, como faço para pegar esse valor que o select retorna e guardar em uma variavel.

Obrigado desde já pela ajuda[/quote:5562965e3b]

Faça assim:
query.close;
query.open; // abro a query onde tem o SELECT
tableCliente.fieldByName(´ID_CLIENTE´).asInteger := query.fieldbyname(´MAX´).asInteger; // Jogo o resultado em um campo da sua tabela.


Responder

Gostei + 0

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

Aceitar