List Index Out of Bounds
21/05/2008
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?
Posts
21/05/2008
Emerson Nascimento
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.
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;
Se eu trouxer todos os campos, não dar erro, mas se eu chamar apenas um, então vem o erro.
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.
21/05/2008
Emerson Nascimento
é 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.
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.
26/05/2008
Emerson Nascimento
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.