List Index Out of Bounds

21/05/2008

1

Sempre que eu seto meu provider em Run Time me dá esse erro. Se eu fixar o provider, eu abro o CDS normalmente, mas eu preciso setá-lo em Run Time, por várias razões aqui comigo. O que pode estar ocorrendo?


Responder

Posts

como você está setando o provider? é através de algum laço? algo que faça referência a ComponentCount ou ControlCount?

se possível, publique o código que você usa para setar o provider. talvez o problema esteja ali.


Responder

21/05/2008

Paulo

Pessoal, se eu coloco uma query assim Select * from tabela e não dá o erro, mas se ponho a query normal então dá o erro. A query normal está abaixo:
Cds.Close; Cds.ProviderName := ´dspTB_SAC_NF_CAPEADOR´; Cds.CommandText := ´ SELECT´+ ´ SUM(COALESCE(TB_SAC_NF_CAPEADOR.VL_BRUTO,0) + COALESCE(TB_SAC_NF_CAPEADOR.VL_DESC_ACR,0)) AS VL_LIQ´ + ´ FROM´ + ´ TB_SAC_NF_CAPEADOR´ + ´ WHERE´ + ´ (TB_SAC_NF_CAPEADOR.CD_FUNC = 99999) AND´ + ´ (TB_SAC_NF_CAPEADOR.ST_CANC = 0) AND´ + ´ ((TB_SAC_NF_CAPEADOR.SR_NF = ´´D2´´) OR ((TB_SAC_NF_CAPEADOR.SR_NF = ´´B2´´) AND´ + ´ (TB_SAC_NF_CAPEADOR.CD_CFOP = 6102)))´; Cds.Open;



Responder

21/05/2008

Paulo

Se eu trouxer todos os campos, não dar erro, mas se eu chamar apenas um, então vem o erro.


Responder

21/05/2008

Builder

Paulo, o problema parece estar relacionado com os campos definidos inicialmente em um dos componentes de acesso (clientdataset, query, etc.)

Os campos calculados através de somas parecem não estarem definidos/declarados no componente e portanto, quando executa a nova consulta o provider não acha as definições e informa que não encontrou os mesmos na lista de definições.


Responder
é exatamente o que me pareceu: em algum dos componentes envolvidos há campos persistentes, e você não está trazendo esses campos na sua nova instrução.


Responder

26/05/2008

Paulo

Me parece a mesma coisa, mas não tenho nenhum campo persistente, porem tenho um campo criado apartir de um SUM, tipo:
SUM(COALESCE(VL_BRUTO,0) + COALESCE(VL_DESC,0)) AS [color=red:fff6eba993]VL_LIQ[/color:fff6eba993]. Nunca tive erros dessa forma, mas pode ser isso. No meu CDS não há nenhum campo persistnte, todos são diretos da tabela, nada criado em design.


Responder
o problema não está em algum evento do clientdataset?

porque esse erro acontece ao acessar um elemento fora da faixa.
por exemplo: você tem um conjunto que vai do elemento 0 ao elemento 14 e tenta acessar o elemento -1 ou 15, por exemplo.


Responder