Fórum List Index Of Bounds (-1) #458385

14/10/2013

0

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

Responder

Posts

14/10/2013

Thiago Porto

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

Gostei + 0

14/10/2013

Supernaum

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)
Responder

Gostei + 0

14/10/2013

Supernaum

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

Gostei + 0

14/10/2013

Supernaum

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)
Responder

Gostei + 0

14/10/2013

Supernaum

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)
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar