Delphi + PostgreSQL limit + offset

Delphi

12/11/2012

Boa Tarde pessoal.
Estou usando o postgres como banco, meu select ficou assim:

select cod_cliente, nome, rg, cpf from cadcliente order by cod_cliente limit 500 offset 1

até ótimo ele me traz os 500 registro na boa, meu problema vem quando uso offset = 0 ele me retorna o seguinte erro: "list index out off bounds(-1)" alguem saberia porque o delphi 2010 faz isso? eu descobri que ele estava ignorando o primeiro registro da minha consulta quando eu colocava 1, então fiz o teste no pgadmin com 0 e trouxe normal, se eu tiro o order by ele funciona o offset 0, porém traz todos os registros desordenados e sempre um resultado diferente na consulta, se coloco o order by ele só funciona com o offset >= 1, caso contrário ele me retorna o erro acima no delphi 2010, estou usando query+datasetprovide+clientdataset.

Obrigado
Leandro Santos
Leandro Santos

Leandro Santos

Curtidas 0

Respostas

Claudia Nogueira

Claudia Nogueira

12/11/2012

Pelo que conheço do offset, se colocar offset 0 quer dizer que vai mostrar a partir do primeiro registro, se usar offset 1 vai pular um, começando do segundo. Realmente tem que usar o order para funcionar corretamente.

Esse erro "list index out off bounds(-1)" dá no momento que você executa a Query ou em algum código mais pra baixo?
Você debugou pra ver onde está parando?
GOSTEI 0
Leandro Santos

Leandro Santos

12/11/2012

Na verdade ele da erro quando vai abrir o ClientDataSet a Query abre normalmente, quando ele executa cds.open que ele me retorna este erro.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

12/11/2012

Fiz aqui no mesmo cenário que você passou (Query, DataSetProvider e ClientDataSet) e não ocorreu o problema.
Para o componente de conexão eu uso do PgDac e o PostgreSQL versão 9.2.
Fiz com OFFSET 0 e OFFSET 1.
Vamos ver se alguém já passou por isso então.
GOSTEI 0
Leandro Santos

Leandro Santos

12/11/2012

Humm, será que é meu driver de conexão então?
Uso o driver da Devart for Postgresql.
Você está usando qual Delphi Claudia?
Você pode me enviar este exemplo que você fez de teste para eu ver se aqui da erro?
Se puder, envie para leandrorodrigodossantos@hotmail.com
GOSTEI 0
Leandro Santos

Leandro Santos

12/11/2012

Humm, será que é meu driver de conexão então?
Uso o driver da Devart for Postgresql.
Você está usando qual Delphi Claudia?
Você pode me enviar este exemplo que você fez de teste para eu ver se aqui da erro?
Se puder, envie para leandrorodrigodossantos@hotmail.com


Complementando estou usando este driver para dbxexpress http://www.devart.com/dbx/
GOSTEI 0
Deivison Melo

Deivison Melo

12/11/2012

Clique no clientdataset e no menu contextual (botão direito) na opção Fields Editor e selecione todos os campos e faça a exclusão de todos eles... Depois ou vc adiciona ou deixa o próprio delphi adicionar!
Sua query está no SQLQuery (ou na SQLDataSet)? Faça o que disse e teste novamente...
GOSTEI 0
Leandro Santos

Leandro Santos

12/11/2012

Bom dia Deivison
Eu não adicionei campos na query nem no clientdataset.
É mais estranho do que eu imaginava, estou trabalhando com DataSnap.
GOSTEI 0
POSTAR