mostrar numero do registro no sql

Delphi

08/06/2008

Oi gente... Vamos lá...

Usando Firebird...

ClientDataSet1.CommandText:=´select * from tabela´ tenho os registros da tabela e posso pegar o número de cada registro com o ClientDataSet1.Recno.

Gostaria de saber é se tem como selecionar o número do registro dentro do próprio comando sql. Algo como: ´select tabela.registro, tabela.* from tabela´.

Existe algum comando sql que retorne o número do registro?


Catunda

Catunda

Curtidas 0

Melhor post

Bico

Bico

09/06/2008

Boa tarde.

Colega, a única forma que eu encontrei de resolver o problema que você está enfrentando foi a seguinte:

Criei um generator:
CREATE GENERATOR NUMERO_DA_LINHA;


Antes de rodar a consulta que precisa da coluna com o número da linha eu seto o generator para 0:
SET GENERATOR NUMERO_DA_LINHA TO 0;


E na consulta SQL eu uso a função GEN_ID para incrementar o generator:
SELECT P.RAZ_SOC, GEN_ID(NUMERO_DA_LINHA, 1)"NUMERO_DA_LINHA"
FROM PESSOA P


Espero ter ajudado.
Qualquer dúvida, dá um grito aí.

Atenciosamente,
Fernando.


GOSTEI 1

Mais Respostas

Javapaulomg

Javapaulomg

08/06/2008

Acho que ´Count´ resolveria. Semelhante a ´select count(*) from tabela´.


GOSTEI 0
Paulo

Paulo

08/06/2008

O que ele quer não é isso, mas sim acessar um determinado registro equivalente a uma determinada posição. Ex: Se a linha XXXXX YYYYY for o registro(RecNo) de numero 8, ele quer acessar essa linha passando como parâmetro o RecNo 8. Eu desconheço se há como fazer, mas acho que de alguma forma é possível sim, até porque o Sql te retorna um valor válido.


GOSTEI 0
Flyskin

Flyskin

08/06/2008

No oracle existe a função row_number() over()... procura para ver se no firebird tem algo parecido...


GOSTEI 0
Brunodsr

Brunodsr

08/06/2008

Excelente!!!!

Eu tinha resolvido o mesmo problema de forma diferente há algum tempo atrás. Mto boa a sua solução Bico.


GOSTEI 0
Wilson Azambuja

Wilson Azambuja

08/06/2008

Uma técnica que já utilizei foi com execute block.

EXECUTE BLOCK
RETURNS(ROW_NUMBER INTEGER, TABLE_NAME VARCHAR(32))
AS
BEGIN
FOR SELECT ROW_COUNT, RDB$RELATION_NAME FROM RDB$RELATIONS
INTO :ROW_NUMBER, :TABLE_NAME DO
SUSPEND;
END
GOSTEI 0
Helivalda Barco

Helivalda Barco

08/06/2008

BICO, PRECISEI E USEI A SUA RESPOSTA. MUITO OBRIGADA... DEU SUPER CERTO!!!
GOSTEI 0
Mário Reis

Mário Reis

08/06/2008

Uma técnica que já utilizei foi com execute block.
Não estou a responder mas antes a "Perguntar" que usa em seus programas? Tem um exemplo pequeno.Obrigado

EXECUTE BLOCK
RETURNS(ROW_NUMBER INTEGER, TABLE_NAME VARCHAR(32))
AS
BEGIN
FOR SELECT ROW_COUNT, RDB$RELATION_NAME FROM RDB$RELATIONS
INTO :ROW_NUMBER, :TABLE_NAME DO
SUSPEND;
END


Nunca usei o "Execute Block" porque até hoje não percebi como "montar o comando" no meu programa
Uso delphi e qual seria o componente a usar Query ou Script?

Ou posso montar o execute block numa Store Procedure
GOSTEI 0
POSTAR