Erro em consulta sql
Estou tentando trazer os ultimos registros de um tabela com a seguinte instrucao
DM.CdsClientes.CommandText := ´select * from (select * from ftclientes order by codcli desc limit 10 offset 0) as teste order by codcli´;
Meu BD é o Postgresql
Porem me retorna o seguinte erro: List index out of bounds(-1)
O que esta errado?
Abs
DM.CdsClientes.CommandText := ´select * from (select * from ftclientes order by codcli desc limit 10 offset 0) as teste order by codcli´;
Meu BD é o Postgresql
Porem me retorna o seguinte erro: List index out of bounds(-1)
O que esta errado?
Abs
Felipeiw
Curtidas 0
Respostas
Martins
31/08/2005
Porem me retorna o seguinte erro: List index out of bounds(-1)
Seu BD tem quantos registros?
pois parece q vc está querendo trazer mais registros do q ha nele, tanto eh q apresentou este erro, informando q a lista de indice está fora do limite.
GOSTEI 0
Felipeiw
31/08/2005
tem 42000 registros.
GOSTEI 0
Rjun
31/08/2005
Esse erro não se refere ao seu código SQL. Em que momento ele dispara esse erro?
GOSTEI 0
Felipeiw
31/08/2005
DM.CdsClientes.Close;
DM.CdsClientes.CommandText := ´select * from (select * from ftclientes order by codcli desc limit 10 offset 0) as teste order by codcli´;
DM.CdsClientes.Open;
Neste momento.
DM.CdsClientes.CommandText := ´select * from (select * from ftclientes order by codcli desc limit 10 offset 0) as teste order by codcli´;
DM.CdsClientes.Open;
Neste momento.
GOSTEI 0
Rômulo Barros
31/08/2005
Todo TClienteDataSet está ligado a um TDataSetProvider q por sinal poderá estar ligado a um TSqlQuery(Seu caso) ou tSqlTable(não é seu caso).
O componente TSqlQuery possui a propriedade Sql q é do tipo TStrings, logo poderemos acessá-lo assim:
TSqlQuery.Sql.Add(´primeira linha da SQL´);
Entretanto, se nenhuma linha tiver sido criada e vc tentar acessar assim:
TSqlQuery.Sql[2] := ´Primeira linha da SQL´ irá ser levantado uma exceção q exibirá o erro ListIndexOutOfBonds...
Então.. quando vc faz: TClientDataSet.CommandText := ´Select blá.. blá.. blá... blá...´ .. ... ; automaticamente o TClientDataSet alimenta a propriedade Sql do componente TSqlQuery. ´ACREDITO EU Q SE NÃO POSSUIR NENHUMA LINHA ´ativa´ NO TSQLQUERY, VAÍ DÁ O ERRO Q ACONTECE COM VC.´
[b:b69ce5b692]Solução:[/b:b69ce5b692] ´SE REALMENTE FOR ISSO Q FALEI´, alimente a propriedade SQL do TSqlQuery, e não a propriedade CommandText do TClientDAtaSet. Depois, é só abrir o TClientDataSet.
Ate mais. !!! :wink:
O componente TSqlQuery possui a propriedade Sql q é do tipo TStrings, logo poderemos acessá-lo assim:
TSqlQuery.Sql.Add(´primeira linha da SQL´);
Entretanto, se nenhuma linha tiver sido criada e vc tentar acessar assim:
TSqlQuery.Sql[2] := ´Primeira linha da SQL´ irá ser levantado uma exceção q exibirá o erro ListIndexOutOfBonds...
Então.. quando vc faz: TClientDataSet.CommandText := ´Select blá.. blá.. blá... blá...´ .. ... ; automaticamente o TClientDataSet alimenta a propriedade Sql do componente TSqlQuery. ´ACREDITO EU Q SE NÃO POSSUIR NENHUMA LINHA ´ativa´ NO TSQLQUERY, VAÍ DÁ O ERRO Q ACONTECE COM VC.´
[b:b69ce5b692]Solução:[/b:b69ce5b692] ´SE REALMENTE FOR ISSO Q FALEI´, alimente a propriedade SQL do TSqlQuery, e não a propriedade CommandText do TClientDAtaSet. Depois, é só abrir o TClientDataSet.
Ate mais. !!! :wink:
GOSTEI 0