List Index Of Bounds (-1)

Delphi

14/10/2013

Criei um select com subselect em uma Query, na hora de dar Add All Fields no ClientDataSet gera esse erro, o select tem 2 parametros, os quais estão listados na propriedade Params da Query, e estão com seus respectivos DataTypes
Supernaum

Supernaum

Curtidas 0

Respostas

Thiago Porto

Thiago Porto

14/10/2013

Posta o SQL, mas geralmente esse erro é devido a quantidade parâmetros.
GOSTEI 0
Supernaum

Supernaum

14/10/2013

Na verdade eu descobri onde está o erro, esse é meu select, o erro está no order by do subselect:

SELECT
VI.ID_MAN_ITENS, VI.ID_MANUT, VI.ID_PROD, VI.DESCRICAO,
VI.UNID, VI.QUANTIDADE, VI.UNITARIO, VI.TOTAL, VM.HODOMETRO,

COALESCE((SELECT FIRST 1 ((VM.HODOMETRO-VMI.HODOMETRO)/VI.QUANTIDADE) FROM VEIC_MAN_ITENS V

LEFT JOIN VEIC_MANUT VMI ON VMI.ID_MANUT = V.ID_MANUT

WHERE (V.ID_MAN_ITENS<VI.ID_MAN_ITENS) AND (V.ID_PROD = VI.ID_PROD)

ORDER BY VI.ID_MAN_ITENS DESC),0) AS MEDIA
FROM
VEIC_MAN_ITENS VI

LEFT JOIN VEIC_MANUT VM ON VM.ID_MANUT = VI.ID_MANUT

WHERE (VM.ID_VEIC = :ID_VEIC)
GOSTEI 0
Supernaum

Supernaum

14/10/2013

Caso tente usar no IBExpert ele executa os comandos mas no Delphi ele está gerando um erro
GOSTEI 0
Supernaum

Supernaum

14/10/2013

O Select é esse :


SELECT
VI.ID_MAN_ITENS, VI.ID_MANUT, VI.ID_PROD, VI.DESCRICAO,
VI.UNID, VI.QUANTIDADE, VI.UNITARIO, VI.TOTAL, VM.HODOMETRO,

COALESCE((SELECT FIRST 1 ((VM.HODOMETRO-VMI.HODOMETRO)/VI.QUANTIDADE) FROM VEIC_MAN_ITENS V

LEFT JOIN VEIC_MANUT VMI ON VMI.ID_MANUT = V.ID_MANUT

WHERE (V.ID_MAN_ITENS<VI.ID_MAN_ITENS) AND (V.ID_PROD = VI.ID_PROD)

ORDER BY VI.ID_MAN_ITENS DESC),0) AS MEDIA
FROM
VEIC_MAN_ITENS VI

LEFT JOIN VEIC_MANUT VM ON VM.ID_MANUT = VI.ID_MANUT

WHERE (VM.ID_VEIC = :ID_VEIC)
GOSTEI 0
Supernaum

Supernaum

14/10/2013

Bom, por razões de trabalho tive de mudar meu Select, que ficou assim...... continua dando o mesmo erro, se retirar o order by ele funciona, porém esse comando é necessário para as realizações dos processos... alguém poderia me ajudar??

SELECT
VI.ID_MAN_ITENS, VI.ID_MANUT, VI.ID_PROD, VI.DESCRICAO,
VI.UNID, VI.QUANTIDADE, VI.UNITARIO, VI.TOTAL, VM.HODOMETRO,
VM.ID_MOTORISTA, VM.ID_FORN,

COALESCE((SELECT FIRST 1 ((VM.HODOMETRO-VMI.HODOMETRO)/VI.QUANTIDADE) FROM VEIC_MAN_ITENS V

LEFT JOIN VEIC_MANUT VMI ON VMI.ID_MANUT = V.ID_MANUT

WHERE (V.ID_MAN_ITENS<VI.ID_MAN_ITENS) AND (V.ID_PROD = VI.ID_PROD)

ORDER BY V.ID_MAN_ITENS DESC),0) AS MEDIA
FROM
VEIC_MAN_ITENS VI

LEFT JOIN VEIC_MANUT VM ON VM.ID_MANUT = VI.ID_MANUT


WHERE (NOT VI.ID_MAN_ITENS IS NULL)
GOSTEI 0
POSTAR